6

Androidアプリケーションに2つのアクティビティがあり、それぞれに(startActivity()メソッドによって)他のアクティビティに移動するボタンがあります。2 番目のアクティビティには、編集テキスト (URL アドレス バー) と Web ビューがあります。

したがって、Activity1 のボタンをクリックして Activity2 を開始すると、Activity2 が Web ビューで表示されます。次にcnn.com、(たとえば) アドレス バーに入力すると、Web ビューにcnn.comWeb サイトが表示されます。その後、ボタンをクリックして、アクティビティ 2 からアクティビティ 1 に移動します。アクティビティ 1 のボタンをもう一度クリックすると、アクティビティ 2 が開始されます。しかし、Activity2 は作成されたばかりです。つまり、編集テキストと Web ビューは空です。

私が望むのは、アクティビティ 1 からアクティビティ 2 に戻る場合、アクティビティ 2 が最後の状態を保持することです。編集テキストは保持cnn.comされ、Web ビューは CNN Web サイトを表示し続ける必要があります。したがって、Activity1 を開始する前に Activity2 を終了するのではなく、Activity2 を非表示にして Activity2 を開始し、再び戻ったときに最後の状態を取得する必要があります。(ホームボタンをクリックしたときのように。)どうすればこれを達成できますか?

4

3 に答える 3

11

ここにあなたの問題を解決するための提案があります。

アクティビティ 2 にあるボタンから移動し、現在アクティビティ 1 にいる場合は、アクティビティ 2 から 1 に移動するときに、アクティビティ 2 を終了しないようにしてください。

アクティビティ 2 に戻りたい場合は、以下のようにアクティビティを呼び出す必要があります。

    Intent mIntent=new Intent(yourActivityOne1.this, YourActivity2.class);
    mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(mIntent);

したがって、このコードが行うことは、アクティビティの新しいインスタンスを作成せずに最初にアクティビティを作成し、最後に読み込まれた Web サイトがそこにあることを確認できます。

于 2012-05-03T16:54:07.840 に答える
1

BackPressed のアクティビティは終了せず、ホーム ボタンとして動作します。

あなたはそれを編集することができます..完了しないと役立つ場合があります

@Override
public void onBackPressed()
    {

   Log.d("CDA", "onBackPressed Called");
   Intent setIntent = new Intent(Intent.ACTION_MAIN);
   setIntent.addCategory(Intent.CATEGORY_HOME);
   setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(setIntent);
   }
于 2014-05-20T07:22:18.483 に答える
1

非表示にする方法はわかりませんが、アクティビティ 2 のテキストを onPause メソッドの設定に保存し、アクティビティ 2 の作成時に設定からデータをロードします。

アクティビティ 2 は次のようになります。

onPause(){
    SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE);  
    SharedPreferences.Editor prefEditor = settings.edit();  
    prefEditor.putString("activity2Text", textField.getText().toString());  
    prefEditor.commit(); 
}

onCreate(){
      .....
    SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE); 
    textField.setText(settings.getString("activity2Text","") );
}
于 2012-05-03T16:46:22.410 に答える