アプリケーションには 2 つのアクティビティがあります。Activity1 にはリスト ビューと 2 つのボタン (button1 と button2 など) があります。ユーザーがクリックしたボタンに応じて、リストビューのコンテンツが変化します。アクティビティのデフォルトのロードでは、ボタン 1 のクリック コンテンツがアクティビティ 1 にロードされます。私のActivity2には、クリックするとactivity1をロードする必要があるボタン(button3など)がありますが、ボタン1のクリック結果を表示するデフォルトの表示ではなく、button2のクリック結果がロードされたリストビューがあります。どうすればこれを達成できますか?activity2 の button3 の onclick イベントで activity1 をロードできますが、button1 のクリック結果を表示するデフォルトの状態でロードされます。
4 に答える
アクティビティを切り替えるときに IntentHandler で追加の文字列を渡すことで、ListView の状態を保存します。
Intent intent = new Intent(getBaseContext(), yourActivity.class);
intent.putExtra("LISTVIEW_STATE", myListViewState);
startActivity(intent);
次に、受信アクティビティの onCreate() メソッド (この場合は yourActivity) で、次の方法で状態を取得できます。
Intent intent = getIntent();
String recievedListViewState = intent.getStringExtra("LISTVIEW_STATE");
これを行うには、インテントにエクストラを追加します。現在、Activity2 から Activity1 を開始すると、おそらく次のようなコードになります。
Intent intent = new Intent(Activity2.this, Activity1.class);
startActivity(intent);
putExtra()
このインテントにキーと値のペア (エクストラと呼ばれる) を設定するメソッドをインテントで使用すると、次のようになります。
Intent intent = new Intent(Activity2.this, Activity1.class);
intent.putExtra("LIST_TO_DISPLAY", "LIST_2");
startActivity(intent);
(キー)の最初の引数putExtra()
は常に文字列で、2 番目の引数 (値) はさまざまなデータ型にすることができます。これも文字列です。
Activity1 が開始したら、 を使用してインテントを取得し、getIntent()
そこからエクストラをすべてonCreate()
.
protected void onCreate(Bundle b)
{
Intent intent = getIntent();
String whichList = intent.getStringExtra("LIST_TO_DISPLAY"); //which List now equals "LIST_2"
if( whichList != null && "LIST_2".equals(whichList) )
{
//Set up List 2
}
else
{
//Set up the default list
}
}
Intent Class のドキュメントは次のとおりです。すべての put および get Extra メソッドの説明と、開始したアクティビティの動作をカスタマイズするときに役立つその他の情報を見つけることができます。
私は理解していないので、あなたが考えるいくつかのことがあります。
...
Activity1 -> Button1 -> Listview (コンテンツ A)
Activity1 -> Button2 -> ListView (コンテンツ B)
Activity1 -> Activity2 -> Button3 -> Activity1 -> ListView (コンテンツ B)
だからあなたはできる
活動中1
startActivity (intentActivity2) を開始します。
活動中2
IntentResult.putExtra("cmd", "button3"); onbutton クリック setResult(RESULT_OK,intentresult) して終了
Activity1 に戻る
onActivityResult resultIntent.getExtra("cmd")
2 番目のアクティビティから、フラグ付きの Intent を送信します。最初のアクティビティでは、常にこのフラグに注意し、それに応じて 2 番目のボタン コードをトリガーします。参考までに、ここまたはグーグルで「アクティビティ間のデータの受け渡し」を検索できます。