2017-05-24 103 views
0

我有3個活動SignIn(LAUNCHER),Main,StockTake(父活動:Main)。Android活動返回按鈕返回上一個活動,但沒有數據

的Android以下清單:

<application 
    ...... 
    <activity 
     android:name=".activities.MainActivity" 
     android:label="@string/title_activity_main">   
    </activity>  
    <activity android:name=".activities.SignInActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".activities.StockTakeActivity" 
     android:parentActivityName=".activities.MainActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".activities.MainActivity" /> 
    </activity> 
</application> 

從主要活動的用戶輸入數據,並移動到盤點活動:

Intent intent = new Intent(this, StockTakeActivity.class);   
startActivity(intent); 

在盤點活動「返回」按鈕是在左上角可見在操作欄中。當後退按鈕'< - '按下時,應用程序將進入主活動,但主活動屏幕將從用戶輸入中清除。

在盤點活動:

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

我有...的onSave和OnRestore中...實施。 onRestore沒有被調用。

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) {   
    super.onSaveInstanceState(savedInstanceState);   
    savedInstanceState.putString(PART_NUMBER_KEY, String.valueOf(txtPartNumber.getText())); 
    savedInstanceState.putString(PART_DESCRIPTION_KEY, String.valueOf(txtPartDescription.getText())); 
    .... 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState);   
    String partNumber = savedInstanceState.getString(PART_NUMBER_KEY); 
    String partDescription = savedInstanceState.getString(PART_DESCRIPTION_KEY); 
    ..... 
} 

什麼我需要做的保留用戶輸入的主要業務,當用戶按下「< - 」後退按鈕?我在android 6 API 23上。

+0

你必須設置有關該組件的數據(即編輯文本)在MainActivity的onResume()方法上。 – ManishNegi

回答

0

您可以嘗試共享首選項來存儲數據,當您回來時檢索它們。 初始化

SharedPreferences sharedpreferences; 
sharedpreferences = getSharedPreferences("pref", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedpreferences.edit(); 

將內容添加到代碼

editor.putString("name,"xyz"); 

使用它時,你需要它

sharedpreferences = this.getSharedPreferences("pref", Context.MODE_PRIVATE); 
String lanSettings = sharedpreferences.getString("name", null); 
0

從清單文件中刪除android:parentActivityName=".activities.MainActivity",並在添加此StockTakeActivity

@Override 
public boolean onSupportNavigateUp() { 
    finish(); 
    return true; 
} 
0

我最終消除安卓:從清單文件parentActivityName = 「activities.MainActivity」,並取得以下onOptionsItemSelected的變化(...)

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      //NavUtils.navigateUpFromSameTask(this); 
      finish(); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
}