1

インテントに関する問題があります。

クラスA

Intent i=new Intent(getApplicationContext(),JobOffer.class);
i.putExtra("From",aryListBean.get(arg2).getUser());
i.putExtra("StartDate",aryListBean.get(arg2).getStartDate());
i.putExtra("DueDate",aryListBean.get(arg2).getEndDate());
startActivity(i);

クラスB

 Bundle b=getIntent().getExtras();
      String user=b.getString("From");
      String startdate=b.getString("StartDate");
      String duedate=b.getString("DueDate");
      ArrayList<String> hr_offerdet=b.getStringArrayList("AryHrOffer");

    tvUser.setText("   "+user);
    tvStarDate.setText("   "+startdate);
    tvDueDate.setText("   "+duedate);

クラス C: クラス B に戻るボタン

ここで、クラス A からクラス B にデータを正常に送信しました。クラス B にデータを取得します。クラス B からクラス C に移動し、再びクラス B に戻ると、Nullpointer Exception が発生します。これを解決するための差分方法はありますか? 助けてください

4

3 に答える 3

4

あなたのコードでは、キー「AryHrOffer」で配列リストを渡すことができませんでした。

また、バンドルが存在するかどうかを常に最初に確認する必要があります。

例えば。if(b!=null){ //... }

次に、アクティビティ B を開く必要があるすべてのクラスは、本当に必要な場合は必要なパラメーターを渡す必要があります。それ以外の場合は、バンドルが null の場合は無視します。

編集:

あなたの問題を読み直した後、「..そして再びクラスBに戻ってきた、Nullpointer例外があります」と述べていることに気付きました

問題は意図的にエクストラを渡すことではなく、アクティビティ B の onResume にある可能性があります。

于 2013-03-07T08:24:52.110 に答える
1

まず第一に、logcat と、NullPointer を持っている指示のどれを提供してください。

次のことを確認する必要があります。

if (getIntent() != null && getIntent().getExtras() != null) {
    Bundle b = getIntent().getExtras();
    String user = b.getString("From");
    String startdate = b.getString("StartDate");
    String duedate = b.getString("DueDate");
    ArrayList < String > hr_offerdet = b.getStringArrayList("AryHrOffer");

    tvUser.setText("   " + user);
    tvStarDate.setText("   " + startdate);
    tvDueDate.setText("   " + duedate);
}
于 2013-03-07T08:45:20.710 に答える
0

bundleかどうかを確認する必要がnullあります。

if(b!=null){

 // your code

}
于 2013-03-07T08:17:08.387 に答える