Android活动后退按钮返回上一个活动,但没有数据

时间:2017-05-24 04:27:23

标签: android android-intent android-activity

我有3个活动SignIn(LAUNCHER),Main,StockTake(父母活动:Main)。

下面的Android Manifest:

<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);

在StockTake活动中,“后退”按钮显示在操作栏的左上角。当后退按钮'&lt; - '按下时,应用程序将进入主活动,但主活动屏幕将从用户输入中清除。

在StockTake活动中:

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);
    .....
}

当用户按下“&lt; - ”后退按钮时,我需要做什么才能在主要活动中保留用户输入?我在android 6 API 23上。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用共享首选项来存储数据,当您返回时可以检索它们。 初始化

compile 'org.springframework.boot:spring-boot-starter-jdbc'

在代码中添加内容

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

在您需要时使用

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

答案 1 :(得分:0)

从清单文件中删除android:parentActivityName=".activities.MainActivity"并将其添加到StockTakeActivity

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

答案 2 :(得分:0)

我最终从清单文件中删除了android:parentActivityName =“。activities.MainActivity”并将下面的更改改为onOptionsItemSelected(...)

..\release