我有兩個活動:主活動和其他活動。在MainActivity片段啓動OtherActivity,但是當我按後退按鈕,在頂部,它返回我的MainActivity取而代之的是推出了OtherActivity的片段。從另一個活動返回後返回到MainActivity的片段?
最終結果是最終用戶被髮送回主屏幕而不是他們正在使用的片段。
這是我的清單。我已經設置MainActivity是的OtherActivity父:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".OtherActivity"
android:parentActivityName="com.example.test.MainActivity" >
</activity>
在MainActivity,當用戶點擊一個按鈕,它加載列表片段:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ...
button.findViewById(R.id.events).setOnClickListener(new View.OnClickListener() {
Fragment ef = new MyItemsFragment();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.content, ef, "my_fragment");
fragmentTransaction.commit();
});
}
public void callOtherActivity() {
Intent i = new Intent(this, OtherActivity.class);
this.startActivity(i);
}
當項目在List Fragment中單擊,它啓動OtherActivity。很多代碼都是由android studio自動生成的。我改變了一些。在MyItemsRecyclerViewAdapter:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = mValues.get(position);
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != mListener) {
// Notify the active callbacks interface (the activity, if the
// fragment is attached to one) that an item has been selected.
mListener.onEventFragmentInteraction(holder.mItem);
MainActivity ma = (MainActivity) holder.mView.getContext();
ma.callOtherActivity();
}
}
});
}
通知它調用,這是在MainActivity定義,將推出OtherActivity當點擊列表中的片段的項目。
這是OtherActivity:
public class OtherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
}
}
現在,當我點擊在OtherActivity後退箭頭按鈕,該應用程序將只顯示MainActivity,而不是名單片段用戶上次看到。
如何確保從OtherActivity返回時,用戶將再次看到列表片段以獲得更好的用戶體驗?
編輯:似乎有關於'後退'按鈕的混淆。也許他們是一樣的,但我在談論切換活動時的那個。它不是用於退出應用程序的後退按鈕。 See image
嘗試在調用片段時刪除addToBackStack(null),並參見 –
從清單文件中刪除android:parentActivityName =「com.example.test.MainActivity」並嘗試。無論您何時單擊後退按鈕,它都會基本啓動MainActivity新鮮activity.Please讓我知道如果我是錯的。 –
只有一個「後退」按鈕,通常用於導航後退堆棧。我認爲你的更新是說你指的是「向上」按鈕。 https://developer.android.com/training/appbar/up-action。html – Kuffs