2016-09-23 10 views
1

MainActivityから2番目のActivityにデータを取得すると、常にjava.lang.NullPointerExceptionが返されます。インテントを介したデータの受け渡し

Intent extras = getIntent(); 
public String isConnected = extras.getStringExtra("isConnected"); 
public String serverIP = extras.getStringExtra("serverIP"); 

私のコードが間違っているか、それはnullをする原因となる何か他のものがある:私のMainActivityから

この

:私は NullPointerExceptionを取得する場所

Intent i = new Intent(MainActivity.this,ScanActivity.class); 
i.putExtra("isConnected", String.valueOf(isConnected)); 
i.putExtra("serverIP", serverIP); 
startActivity(i); 

そして、ここですか?

+1

2番目の 'Activity'の' onCreate() 'メソッドの外で行っていますか? – Onik

+0

はい。その原因は何ですか? – addykha

+0

それはそうです。 – Onik

答えて

1

がインスタンス化されるまでIntentを取得することはできません。それはNPEの理由です。 SecondActivityonCreate()メソッド本体の内部にコードを移動します。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_layout); 

    Intent extras = getIntent(); 
    String isConnected = extras.getStringExtra("isConnected"); 
    String serverIP = extras.getStringExtra("serverIP"); 
} 
-2

あなたはこの作品を願って、NULLポインタを避けるために、最初にそれを調整する必要があり、あなたの二次活動

Bundle bundle = getIntent().getExtras(); 
if(bundle != null){ 
String serverIp = bundle.getString("serverIP); 
} 

でこれを使用する必要があります。

+0

これは答えではありません。便利な方法を使ってバンドルを取得しないようにすることができます。バンドルはヌルチェックを行います。 –

+0

私は、私の悪いことがわかります。私はまだ初心者です。 – Meowok

+0

大したことはありませんが、私たちは時々間違った答えを与えます。コードはうまく動作しますが、彼が正しい場所でそれを行った場合も同様です。 –

関連する問題