2012-07-29 61 views
0

我有我的啓動程序活動,它會生成一個ListView。Android活動ListView LoaderManager記住以前狀態的導航

現在在ListView上我有一個setOnItemClickListener,它將基本上將位置和ID傳遞給一個新的活動。

mList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent intent = new Intent(ActivityHome.this, ActivityDetail.class); 
      intent.putExtra("cm_position", position); 
      intent.putExtra("cm_id", id); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
     } 
    }); 

現在ActivityHome中的ListView顯示在ListView中間的某個地方。

當我在ActivityDetail中,並且我有一個actionBar.setDisplayHomeAsUpEnabled(true);所以執行時,它下面會回到ActivityHome

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      Intent intent = new Intent(this, ActivityHome.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

的問題是在ListView的位置丟失,ListView控件返回到頂部。有沒有辦法停止onCreate()從執行,只是沒有Activity的ActivityDetail,只是回到ActivityHome它是什麼...我希望你明白。

我想我可能已經設置的標誌錯誤的意圖......

回答

0

修正:

在ActivityDetail,你需要設置該標誌

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 

我知道這是與正確使用標誌有關!!!

上述示例中活動B的當前正在運行的實例將接收您在其onNewIntent()方法中從此處開始的新意向,或者將其自身完成並用新意向重新啓動。如果它已宣佈其啓動模式爲「多個」(默認),並且您沒有將FLAG_ACTIVITY_SINGLE_TOP設置爲同一意圖,那麼它將被完成並重新創建;對於所有其他啓動模式,或者如果設置了FLAG_ACTIVITY_SINGLE_TOP,則此Intent將被傳遞到當前實例的onNewIntent()。