1

チェックされていないキャストの警告が表示されますが、それを抑制しても安全かどうかわかりません。

の中に を入れてArrayList<Fragment>Bundleます。このバンドルは、次のようにインテントに配置されます。

Intent mIntent = new Intent(getBaseContext(),MySecondActivity.class);
Bundle myBundle = new Bundle();
myBundle.putSerializable("fragmentList",ArrayList<Fragment>);
mIntent.putExtras(myBundle);
startActivity(mIntent);

次に、新しいアクティビティ (MySecondActivity) で、次のコードを使用してこのデータを取得しています。

(ArrayList<Fragment>) getIntent().getSerializableExtra("fragmentList")

コンパイラから次の警告が表示されます。

" チェックされていないキャスト: 'java.io.Serializable' から 'java.util.ArrayList' へ"

すべてが正常に機能していますが、安全に抑制できると言うのは正しいですか?

ありがとうございました!

4

1 に答える 1

1

Fragments は Serializable ではありません。Fragments の ArrayList と同じです。したがって、putSerializableこれでは機能しません。それらがシリアライズ可能であっても、メソッドを正しく使用する必要があります。何かのようなもの:

ArrayList<Fragment> fragmentArrayList = new ArrayList<Fragment>();
fragmentList.add(foo);
...
myBundle.putSerializable("fragmentList", fragmentArrayList);  //not ArrayList<Fragment>

代わりに、

  1. MySecondActivityに渡したいこれらのフラグメントを作成しましたonCreate
  2. MySecondActivityその意図のためにバンドルに渡したいデータクラスを配置しますがParcelable、代わりに実装します。

ステップ 2 では 、データ クラスを実装するためのチュートリアルを次に示します。Parcelable

HTH!!!

于 2014-07-25T19:31:53.127 に答える