0

「アクティビティ 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
4

4 に答える 4

1

ログによると、アクティビティ B で TextView を初期化していないようです。TextView にテキストを設定する前に、これを実行してください。

TextView hash = (TextView)findViewById(R.id.hash_textview);
于 2016-05-10T16:47:29.040 に答える
0

あなたのtextViewオブジェクトはnull参照されています。そのTextViewのメソッドを呼び出す前に、oncreateでハッシュ変数を初期化する必要があります...

例:

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

その後、 settext メソッドを呼び出すことができます

 hash.setText(passedHash);
于 2016-05-10T17:28:43.940 に答える
0

text_hash である場合、TextViewまたはEditText使用する

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

ActivityBonCreate() では、これを使用します。

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

EDIT エラーログから、ActivityBでTextViewを初期化しませんでした。最初にその TextView を初期化し、次に Text を設定する必要があります。

于 2016-05-10T16:40:41.133 に答える