【问题标题】:Android .putExtra (not responding)Android .putExtra(无响应)
【发布时间】:2016-05-10 16:36:03
【问题描述】:

我需要将从“活动 A”创建的字符串传递给“活动 B”,以便可以在 TextView 中显示它。 问题是代码导致Android没有响应,它与在线其他教程相同。

感谢您的任何反馈。

活动 A.onCreate()

check_button = (Button) findViewById(R.id.check_button);
    check_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            Intent i = new Intent(AddActivity.this, DetailActivity.class);
            String hash = text_hash.toString();
            i.putExtra("hash" , hash);
            startActivity(i);
        }
    });

活动 B.onCreate()

Bundle extras = getIntent().getExtras();
if (extras != null)
{
    passedHash = (String) getIntent().getExtras().getString("hash");
    hash.setText(passedHash);
}

堆栈跟踪:

     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

【问题讨论】:

  • text_hash 是 textView 吗?
  • 是的,请参阅问题的编辑 :)
  • 正如@SajedulKarim 所说,您应该使用 String hash = text_hash.getText().toString();

标签: android string put extra


【解决方案1】:

根据您的日志,您似乎没有在 Activity B 中初始化 TextView。在将文本设置为 TextView 之前执行此操作:

TextView hash = (TextView)findViewById(R.id.hash_textview);

【讨论】:

  • 字面上只是想通了。 +1 :)
【解决方案2】:

好的,所以我需要使用 X.getText().toString(); 通过阅读堆栈跟踪,我想在尝试设置文本之前,我还需要在 TextView 上找到 ViewByID。

感谢阅读。

【讨论】:

    【解决方案3】:

    如果text_hashTextViewEditText,则使用使用

    String hash = text_hash.getText().toString();
    

    ActivityB onCreate() 中使用:

    String newString;
    if (savedInstanceState != null) {
        Bundle extras = getIntent().getExtras();
        if(extras == null) {
            newString= null;
        } else {
            newString= extras.getString("hash");
        }
    }
    

    编辑 从您的错误日志中,您没有在 ActivityB 中初始化 TextView。首先你必须初始化那个 TextView 然后设置 Text。

    【讨论】:

      【解决方案4】:

      您的 textView 对象为空引用,您需要在开始调用该 TextView 的任何方法之前在 oncreate 中初始化哈希变量...

      示例:

      @Override
      public void onCreate(Bundle savedInstanceState) 
      {
          super.onCreate(savedInstanceState);
          TextView hash = (TextView)findViewById(R.id.hash_textview);
      

      之后就可以调用settext方法了

       hash.setText(passedHash);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-07
        • 2015-03-30
        相关资源
        最近更新 更多