2012-07-29 55 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()。