0

好的,所以我知道这可能看起来很简单,我的意思是我认为它是。但本质上我希望 restartActivity 方法重新启动活动。

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

然后我的类包含这样的restartActivity方法

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

当我尝试这个时,最终发生的是停止工作的对话框。所以我的问题就是为什么这不起作用。我确保我在正确的布局中制作了重新启动按钮,我检查了所有需要的参考资料。并且android清单都是正确的。直到我添加了这两行,它才开始崩溃。我还应该提到我的目标 api 是 8,建议的答案之一是 api 11 或更高版本。由于日食“好心”让我知道。

4

3 回答 3

4

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

 public void recreate ()

自:API 级别 11 导致使用新实例重新创建 Activity。这导致与由于配置更改而创建 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();
    }
于 2013-04-20T04:49:55.753 回答
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();

在您的第二个 Activity on button 点击

Intent t= new Intent(SecondActivity.this,FirstActivity.class);
startActivity(t);
finish();
于 2013-04-20T04:49:37.783 回答
0

您的点击可能会喜欢

 public void restartActivity(View view)
     {
         // do your work Here
         Intent intent= new Intent(currentActivity.this, MainActivity.class);
         startActivity(intent);
     }
于 2013-04-20T04:49:10.437 回答