漆黑天使复活 2016-04-27 13:28 采纳率: 44.4%
浏览 3839
已采纳

android小白问一个故障

android小白,做一个很简单的动作,第一个activity里面输入的内容传递到第二个activity的textview中去,但是报错如下
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

第一个activity

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
    }
 public void sendMessage3(View view){
Intent intent=new Intent(this,DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
  intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
            }

     public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";


}

第二个activity

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);


        TextView tv = (TextView) findViewById(R.id.textView);
        tv.setText(message);

        // Set the text view as the activity layout
        setContentView(R.layout.activity_display_message);


    }

如果我把 tv.setText(message);这句话注销掉,不赋值,第二个页面就能正常打开。

android刚上手小白。。自己研究了半天没研究出什么原因,求大神解答,非常感谢

  • 写回答

14条回答 默认 最新

  • 夜幕色倾城 2016-04-27 15:16
    关注

    setContentView(R.layout.activity_display_message);放在第三行,其他下移

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • little_how 2016-04-27 13:55
    关注

    textView没找到吧,你可以打印下tv这个值,看是不是null

    评论
  • danielinbiti 2016-04-27 13:59
    关注
     TextView tv = (TextView) findViewById(R.id.textView);
            tv.setText(message);
    
            // Set the text view as the activity layout
            setContentView(R.layout.activity_display_message);
    
    顺序换一下,反了,现有布局,再找组件
    
            // Set the text view as the activity layout
            setContentView(R.layout.activity_display_message);
    TextView tv = (TextView) findViewById(R.id.textView);
            tv.setText(message);
    
    
    评论
  • 月盡天明 博客专家认证 2016-04-27 14:05
    关注

    setContentView应该放到你实例化组件之前。
    你应该这样写:

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
      // Set the text view as the activity layout
            setContentView(R.layout.activity_display_message);
    
            Intent intent = getIntent();
            String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    
    
            TextView tv = (TextView) findViewById(R.id.textView);
            tv.setText(message);
        }
    
    
    评论
  • suwu150 博客专家认证 2016-04-27 15:44
    关注

    你应该这样写:
    // Set the text view as the activity layout
    setContentView(R.layout.activity_display_message);//先找到activity布局,然后在查找其中的组件

        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        TextView tv = (TextView) findViewById(R.id.textView);
        tv.setText(message);
    

    按我上面的写法是合适的

    评论
  • suwu150 博客专家认证 2016-04-28 04:35
    关注

    弄好了没?应该好了吧

    评论
  • GrayHJX 2016-04-28 05:47
    关注

    空指针异常,因为没能找到你的控件。所以不能用它进行赋值操作。setContentView这句话应该提前,先找到布局才能操作控件

    评论
  • sinat_21406675 2016-04-28 07:06
    关注

    为什么要每点击一次按钮都要去初始化EditText控件,为什么不在onCreate方法中初始化呢?!

    评论
  • 风吹过wu 2016-04-28 11:55
    关注

    setContetnView()应该在前面

    评论
  • 东风玖哥 2016-04-30 07:24
    关注

    setContetnView()写在最上面

    评论
  • 好一个大布丁 博客专家认证 2016-05-03 14:45
    关注

    小白总是会有问题的,大家要有耐心好好回答

    评论
  • 倔强的蜗牛在攀爬 2016-05-04 14:17
    关注

    TextView 要在赋值之前 先 findByid 如果 findByid了 那么就是ID写错了

    评论
  • 小样不一样 2016-05-06 02:44
    关注

    先设置界面,然后在界面中声明组件,顺序不能搞乱了。理解了以后就不会出这样的错误了!

    评论
  • 轩轩笔记 2016-05-22 12:02
    关注

    在ocreate的时候需要把sendMessage3这个方法放进去初始化。 不然sendMessage3这个方法压根不会执行

    评论
查看更多回答(13条)

报告相同问题?

悬赏问题

  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置
  • ¥20 Python调用百度开发者平台人脸识别接口