0

あるアクティビティから別のアクティビティに文字列を渡したいのですが、他のスレッドから受け入れられた多くの回答から参照を取得しましたが、デバッグできないという問題に直面しています。以下のコードに示すようにextras.putStringにコメントすると、Toastメッセージに正しいアドレスが表示されます。これは、値が正しく設定され、コードが正常に機能することを意味しますが、extras.putString()を使用すると、NullPointerExceptionが発生し、例外のためにアプリケーションが閉じます。アドレス文字列に\n文字がたくさんあります。実際、extras.putString( "userAddress"、 "test")を使用しても、NullPointerExceptionが発生します

これが、FBShareアクティビティと呼びたいメインアクティビティです。

Intent mIntent = new Intent(this, FBShare.class);   
Bundle extras = mIntent.getExtras();
String currentAddress = getCurrentAddress(ourLocation);
Toast.makeText(getBaseContext(), getCurrentAddress(ourLocation), Toast.LENGTH_SHORT).show();
extras.putString("userAddress", currentAddress);
startActivity(mIntent);

そして、FBShareアクティビティでは、次のように値をフェッチしようとしています。

strAddress = getIntent().getExtras().getString("userAddress");  

これは、同様のことをしている1つのスレッドです。

4

3 に答える 3

3

インテントに直接追加してみてください。

mIntent.putExtra("Key", "Value")

また、を使用して余分なものを取得します

Intene t = getIntent();
String k="key";
if (t.hasExtra(k)) {
  s = t.getStringExtra(k);
  ...
}

多くのvarタイプのget/putです

于 2012-04-25T07:15:33.130 に答える
3

私のコードを試してください

Intent mIntent = new Intent(this, FBShare.class);   
Bundle extras = new Bundle();
String currentAddress = getCurrentAddress(ourLocation);
Toast.makeText(getBaseContext(), getCurrentAddress(ourLocation), Toast.LENGTH_SHORT).show();
extras.putString("userAddress", currentAddress);
mIntent.putExtras(extras);
startActivity(mIntent);

これがうまくいくことを願っています。

于 2012-04-25T07:16:00.720 に答える
1
Intent mIntent = new Intent(this, FBShare.class);   
String currentAddress = getCurrentAddress(ourLocation);
Toast.makeText(getBaseContext(), getCurrentAddress(ourLocation), Toast.LENGTH_SHORT).show();
mIntent.putString("userAddress", currentAddress);
startActivity(mIntent);

上記のコードを使用できるのは文字列のみを一時停止しているように見えるため、バンドルは必要ありません。

于 2012-04-25T07:30:53.917 に答える