如何在不重新渲染的情况下返回上一个活动

时间:2013-12-26 11:13:51

标签: android android-activity

我有一个主要活动要求第二个活动,我想从第二个活动回到主要活动而不重新初始化它。换句话说,我希望在第二个活动消失后立即显示主要活动,而不是重新渲染第一个活动。我尝试过像完成 onBackPressed 这样的方法,这些方法都没有直接达到我想要的效果。相反,似乎他们返回并重新渲染活动,感觉就像所有以前的数据一样,导致视图丢失,并且它必须从头再次进行。

那么如何在不重新渲染的情况下直接返回?

由于

----------------------更新--------------------

Clase MainActivity extends Activity{
    public onCreate(Bundle savedInstanceState){
           super.onCreate(SaveInstanceState);
           setContentView(R.layout.mainview);
           GoogleMap gmap = ...
           Route route = ...
           //draw a route in the google map
           // now the map bears a route on it
           Intent intent = new Intent(this, secondActivity.class)

   }

}

Class SecondActivity extends Activity{
    public onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondview);

        Button backbut =(Button) findViewById(R.id.backbutton);
    }
    //backbut is associated with a call back onClick in the xml
    private onClick(View){
        finish();//after this the second activity disappears, but previously drawn route on google map also disappears, and it takes time to redraw them again. feels like onCreate in firstActivity is reentered again
    }
}

4 个答案:

答案 0 :(得分:1)

您需要使用这两个标志来完成您想要的任务: -

   Intent.FLAG_ACTIVITY_CLEAR_TOP
   Intent.FLAG_ACTIVITY_SINGLE_TOP

只需使用此代码: -

Intent intent = new Intent(SecondActivity.this,
                MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

答案 1 :(得分:0)

你不应该在第二个活动上调用finish(),然后第一个活动在后台运行,在第二个活动上调用finish()后,第一个活动出现而不重新初始化为私有状态。

答案 2 :(得分:0)

跳这会对你有帮助。

MainActivity extends Activity{

Context context;

      oncreate(){
          context = this;

      Intent intent = new Intent (context , SecondActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);

      /* here finish() method is not called, if called MaintActivity objects will destory*/

     }
}

答案 3 :(得分:0)

伙计们,感谢大家的帮助!我想我有点解决了我的问题。关键是我将onClick方法设为私有,因此我的xml无法找到我的onClick并发出异常,导致活动破坏并重新呈现自己。希望这种解释有意义