5

この質問を見たことがありますが、良い答えが得られず、私の状況は少し異なります。2 つのアクティビティ A と B があります。アクティビティ AI からアクティビティ B を起動しますが、アクティビティ A は開いたままにする必要があります。アクティビティ BI にログインした後、共有設定にデータを保存し、アクティビティ A のレイアウトを共有設定の値に応じて変更する必要があります。 、したがって、ログイン後、アクティビティ A は変更を適用するために再作成する必要がありますが、それでもアクティビティ B の背後にある必要があります。

私の質問は、アクティビティ B からアクティビティ A を再作成することは可能ですか??

4

3 に答える 3

1

http://developer.android.com/reference/android/app/Activity.html#StartingActivities

アクティビティを**再作成*する代わりに、アクティビティを使用startActivityForResultして更新する必要がありますonActivityResult

例えば

 public class MyActivity extends Activity {
     ...

     static final int PICK_CONTACT_REQUEST = 0;

     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
             // When the user center presses, let them pick a contact.
             startActivityForResult(
                 new Intent(Intent.ACTION_PICK,
                 new Uri("content://contacts")),
                 PICK_CONTACT_REQUEST);
            return true;
         }
         return false;
     }

     protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
         if (requestCode == PICK_CONTACT_REQUEST) {
             if (resultCode == RESULT_OK) {
                 // A contact was picked.  Here we will just display it
                 // to the user.
                 startActivity(new Intent(Intent.ACTION_VIEW, data));
             }
         }
     }
 }
于 2015-08-31T08:25:12.033 に答える
0

あなたの解決策は、共有設定から値を取得し、 oncreate() などのアクティビティの OnResume() メソッドでレイアウトを更新することです。

@Override
public void onResume(){
    super.onResume();
    // put your code here... to get sharedpreferences

}
于 2015-08-31T08:10:53.447 に答える