2017-12-31 123 views
2

ListViewを使ってアイテムをクリックするとDetail.javaアクティビティが表示され、エクササイズの情報が表示されますが、次のエクササイズに行ってください。私は細部の多くの活動を生み出さなければそれをする考えはありません。ListViewからアクティビティを開始し、次のアクティビティを開始します

+0

アクティビティの代わりにフラグメントについてのワットコンテンツを置き換えるフラグメント。 –

答えて

0

私の知る限りの情報から理解とuが与えた: あなたのオブジェクトが

Using Serializable and Parcelable instructions

を実装する必要がありますシリアライズとParcelableインタフェースを使用して活動の間にオブジェクトを渡すことができますparcelableを使用して、シリアライズ

ArrayList<ModelClass> yourModelList= new ArrayList<Model>(); 
intent.putExtra("modelList", yourModelList); 

はデータ

ArrayList<ModelClass> modelList= (ArrayList<ModelClass>).getIntent().getSerializableExtra("modelList"); 

を取得使用して詳細なアクティビティ

にあなたの主な活動からのデータを渡す次のステップ

Intent intent = new Intent(this,Detail.class); intent.putParcelableArrayListExtra("modelList", modelList); startActivity(intent); 

あなたDetail.java活動でデータを取得

ArrayList<ModelClass> modelList= getIntent().getParcelableArrayList("modelList"); 

のほかに、あなたが1つのアクティビティからあなたのArrayListを反復始めると、それは厄介取得だって私は非常に、あなたがフラグメントの使用をお勧めします別のセービングIDとその他のもの 希望する;)

+0

ありがとうございますが、getParcelableExtra( "modelList")は動作しません。getStringArrayListExtraを使用しました。 –

+0

私の回答を編集しました.putParcelableArrayListExtraとgetParcelableArrayListExtra – Aliy

0

詳細アクティビティは、必要なパラメータ(この例では次の練習のID)を持つバンドルで開始できます。

Intent mIntent = new Intent(this, Detail.class); 
Bundle mBundle = new Bundle(); 
mBundle.putInt("id", theIdOfNextExercise); 
mIntent.putExtras(mBundle); 
startActivity(mIntent); 

その後、打ち上げ詳細アクティビティでは、経由でパラメータを読むことができます:

int exerciseId = getIntent().getExtras().getInt("id", 0); 

そして、あなたのアクティビティ(詳細)でその運動に関連した詳細を示します。 私はデフォルト値を0に設定しています。したがって、exerciseId> 0の場合は、表示する演習のIDがあります。

バンドルには、すべてのプリミティブ型SerializablesとParcelablesのgetメソッドとputメソッドがあります。 putInt/getIntでの整数の使用は単なる例です。

0

あなたがあなたの運動のIDを保存するためにバンドルを使用して、あなたが呼ばれる活動にそれをキャッチするよりもすることができます...私はあなたがフラグメントを使用することをお勧め、それはより困難だが、それは賢いですし、よりユーザーフレンドリー

関連する問題