使按钮重新启动活动

时间:2013-04-20 04:46:14

标签: java android xml

好的,所以我知道这看似简单,我的意思是我认为是。但基本上我希望restartActivity方法重新启动活动。

我做的第一件事是创建按钮,并在xml中有这样的代码行。 android:onClick="restartActivity"

然后我的类包含了restartActivity方法

public void restartActivity()
{
    Intent intent= new Intent(this, MainActivity.class);
    startActivity(intent);
}

当我尝试这个最终发生的事情是停止工作对话框。所以我的问题就是为什么这不起作用。我确保在正确的布局中制作了重启按钮,我检查确保所有需要的引用都已完成。并且android清单都是正确的。直到我添加它开始崩溃的那两行之后才开始。我还应该提到我的目标api是8,其中一个答案是api 11或更高。作为eclipse"善意"让我知道。

3 个答案:

答案 0 :(得分:4)

Activity类已经提供了这个方法:

 public void recreate ()

自:API等级11 导致使用新实例重新创建活动。这导致与由于配置更改而创建Activity时基本相同的流 - 当前实例将经历其生命周期到onDestroy(),然后在其之后创建新实例。

所以你可以这样做,

public void Restart()
{
   this.recreate();
}

如果您不在活动范围内,那么只需:

public void Restart(Context ctx)
    {
       //geting activty from context
       Activity a = (Activity)ctx;
       //forcing activity to recrete
       a.recreate();
    }

答案 1 :(得分:1)

使用活动上下文。你在点击按钮时指的是这个。这指的是当前上下文,在您的情况下是按钮。

 Intent intent= new Intent(ActivityName.this, MainActivity.class);

这将创建同一活动的新实例。

假设你有MainActivity。这是在后面

在按钮上单击开始相同的活动并调用finish()

Intent t= new Intent(MainActivity.this,MainActivity.class);
startActivity(t);
finish();

编辑:

在您的第一个活动中点击按钮

Intent t= new Intent(FirstActivity.this,SecondActivity.class);
startActivity(t);
finish();

在第二个活动按钮上单击

Intent t= new Intent(SecondActivity.this,FirstActivity.class);
startActivity(t);
finish();

答案 2 :(得分:0)

您的点击可能会像

 public void restartActivity(View view)
     {
         // do your work Here
         Intent intent= new Intent(currentActivity.this, MainActivity.class);
         startActivity(intent);
     }