好的,所以我知道这看似简单,我的意思是我认为是。但基本上我希望restartActivity方法重新启动活动。
我做的第一件事是创建按钮,并在xml中有这样的代码行。
android:onClick="restartActivity"
然后我的类包含了restartActivity方法
public void restartActivity()
{
Intent intent= new Intent(this, MainActivity.class);
startActivity(intent);
}
当我尝试这个最终发生的事情是停止工作对话框。所以我的问题就是为什么这不起作用。我确保在正确的布局中制作了重启按钮,我检查确保所有需要的引用都已完成。并且android清单都是正确的。直到我添加它开始崩溃的那两行之后才开始。我还应该提到我的目标api是8,其中一个答案是api 11或更高。作为eclipse"善意"让我知道。
答案 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);
}