2016-08-02 1 views
-2

私はあるアクティビティから別のアクティビティへのインテントを持つPartオブジェクトを送信しようとします。しかし、私はまだnullポインタの例外を取得します。これは私がそれを送信する方法である:getIntent.getSerializable()がnullを返します

Intent intent = new Intent(this,InvActivity.class); 
     intent.putExtra("Part",part); 
     startActivity(intent); 

、これは私がそれを受信しようとする方法です。

@Override 
    protected void onRestart() { 
     super.onRestart(); 
     Log.e(TAG, "onRestart: "); 

     if(getIntent().getExtras().getSerializable("Part") != null) { 
      Part part = (Part) getIntent().getSerializableExtra("Part"); 
      Log.e(TAG, "onRestart: "+ part.getName()); 
     } 
    } 

それは動作しませんが。私は間違って何をしていますか?

答えて

1

getIntent().getExtras()リターンBundleと、あなたがIntentから直接それを取得する必要がありますIntentBundle直接Serializableなしintentを膨張されています。このような:

if(getIntent().getSerializable("Part") != null) { 
    Part part = (Part) getIntent().getSerializableExtra("Part"); 
    Log.e(TAG, "onRestart: "+ part.getName()); 
} 
+0

それも動作しません:/ – Bartos

+0

なぜあなたはonRestart()でデータを取得していますか? –

+0

原因アクティビティが先に作成されているとき、私は別のアクティビティに行き、最初のアクティビティに戻ります。 – Bartos

0

iはSerializableを

Intent intent = new Intent(this,InvActivity.class); 
Bundle bundle = new Bundle(); 
bundle.putSerializable("Part", (Serializable) part); 
intent.putExtras(bundle); 
startActivity(intent);  



Part part; 
    part = (Part) getIntent().getExtras().getSerializable("Part");  

注意して投げているところ一度コードの下に使用します。

public class Part implements Serializable{ 
} 
+0

まだ動作していません:/ – Bartos

+0

これを一度使用します。 intent.putExtra( "Part"、(Serializable)part); パート=(パート)getIntent()。getSerializableExtra( "パート"); – ViramP

1
if(getIntent().getExtras().getSerializable("Part") != null) { 
     Part part = (Part) getIntent().getExtras().getSerializable("Part"); 
     Log.e(TAG, "onRestart: "+ part.getName()); 
    } 

それはそのように動作するはずです。

Ps:このonRestartは使用しないでください。結果を待っているアクティビティを開始するのが最もよいでしょう。

関連する問題