我正在處理我的第一個Android應用程序,並且我遇到了一個無法排序的問題。我檢查了堆棧溢出,但我找不到解決方案。如何檢查上下文當前正在運行的活動
當菜單項被選中時,我有一個菜單顯示4種不同的活動。 我也有管理菜單類:
public class TabMenuManager {
final Context context;
public TabMenuManager(Context context) {
this.context = context;
}
public boolean handleTabMenuAction(int item) {
Log.d("Toolstrea", "TAB MENU HANDLED: " + item);
switch (item) {
case R.id.action_home:
handleHomeAction();
return true;
case R.id.action_reorder:
handleReOrderAction();
return true;
//.....
}
private void handleReOrderAction() {
if (this.context.getApplicationContext() instanceof ReOrderActivity) {
Log.d("Toolstream", "REORDER CLASSES THE SAME");
Intent reOrderIntent = new Intent(this.context, ReOrderActivity.class);
reOrderIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.context.startActivity(reOrderIntent);
}
else
Log.d("Toolstream", "REORDER CLASSES NOT THE SAME");
}
private void handleHomeAction() {
// Simmilar as one above
}
}
在我顯示菜單中的所有活動,我只要致電:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
TabMenuManager tmm = new TabMenuManager(getApplicationContext());
boolean success = tmm.handleTabMenuAction(item.getItemId());
if (!success) {
return super.onOptionsItemSelected(item);
}
return success;
}
該類只是簡單的展示活動,但我想,以確保它獲得與目前的活動不一樣。 在這個例子中我使用:
this.context.getApplicationContext() instance of ReOrderActivity
但我也試過
this.context.getClass() == HomeActivity.class
它隨時登錄該活動是不同的。 它導致的問題是,如果我在HomeActivity中,我可以在我的菜單中按主頁,另一個HomeActivity實例將被添加到堆棧等。
我該如何確保只展示活動的一個實例? 有沒有更好的方式我這樣做?
非常感謝。
應用程序上下文始終是應用程序的立場。 –