Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 制作按钮以重新启动活动_Java_Android_Xml - Fatal编程技术网

Java 制作按钮以重新启动活动

Java 制作按钮以重新启动活动,java,android,xml,Java,Android,Xml,好吧,我知道这看起来很简单,我的意思是我认为是的。但本质上我希望restartActivity方法重新启动活动 我做的第一件事是创建按钮,并在xml中包含代码行。 android:onClick=“restartActivity” 然后我的类包含restartActivity方法 public void restartActivity() { Intent intent= new Intent(this, MainActivity.class); startActivity(in

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

我做的第一件事是创建按钮,并在xml中包含代码行。
android:onClick=“restartActivity”

然后我的类包含restartActivity方法

public void restartActivity()
{
    Intent intent= new Intent(this, MainActivity.class);
    startActivity(intent);
}
当我尝试此操作时,最终出现的是“停止工作”对话框。所以我的问题很简单,为什么这不起作用。我确保我在正确的布局中设置了重启按钮,我检查了所有需要的参考。android清单是正确的。直到我加上那两行,它才开始崩溃。我还应该提到我的目标api是8,建议的答案之一是api 11或更高。正如eclipse“善意地”告诉我的那样。

您的点击可能会喜欢

 public void restartActivity(View view)
     {
         // do your work Here
         Intent intent= new Intent(currentActivity.this, MainActivity.class);
         startActivity(intent);
     }
你的点击可能会喜欢

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

使用活动上下文。在单击按钮时,您指的是这一点。这是指当前上下文,它是您案例中的按钮

 Intent intent= new Intent(ActivityName.this, MainActivity.class);
这将创建同一活动的新实例

说你有主要的活动。这在后面

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

编辑:

在您的第一个活动中,按一下按钮

Intent t= new Intent(FirstActivity.this,SecondActivity.class);
startActivity(t);
finish();
Intent t= new Intent(SecondActivity.this,FirstActivity.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();

使用活动上下文。在单击按钮时,您指的是这一点。这是指当前上下文,它是您案例中的按钮

 Intent intent= new Intent(ActivityName.this, MainActivity.class);
这将创建同一活动的新实例

说你有主要的活动。这在后面

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

编辑:

在您的第一个活动中,按一下按钮

Intent t= new Intent(FirstActivity.this,SecondActivity.class);
startActivity(t);
finish();
Intent t= new Intent(SecondActivity.this,FirstActivity.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();

活动类已提供此方法:

 public void recreate ()
自:API 11级 使用新实例重新创建活动。这导致的流程与由于配置更改而创建活动时的流程基本相同——当前实例将在其生命周期中进入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();
    }

活动类已提供此方法:

 public void recreate ()
自:API 11级 使用新实例重新创建活动。这导致的流程与由于配置更改而创建活动时的流程基本相同——当前实例将在其生命周期中进入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();
    }

请添加您得到的错误。您是否在再次启动活动之前关闭活动?是否尝试使用“重新创建”方法?下面的答案将有助于解决您的问题,但我认为您应该确保这是您想要做的。如果您需要刷新
视图
或更新数据,那么有更好的方法。没有太多的理由从内部完全重新启动
活动
,这本身并不是一个错误。这只是一个恼人的弹出对话框,上面写着“不幸已停止工作”和codeMagic,我想重新启动的唯一原因是因为在这种情况下,我想从第一页返回主活动的第一页,所有值都被删除并设置回空白。请添加您得到的错误。您是否在再次启动活动之前关闭活动?是否尝试使用“重新创建”方法?下面的答案将有助于解决您的问题,但我认为您应该确保这是您想要做的。如果您需要刷新
视图
或更新数据,那么有更好的方法。没有太多的理由从内部完全重新启动
活动
,这本身并不是一个错误。只是一个恼人的弹出对话框,上面写着“不幸停止工作”和codeMagic,我想重新启动的唯一原因是,在这种情况下,我想从第一页返回主活动的第一页,删除所有值并将其设置为空。那么,等等,这一切都会进入我的第二个活动的onClick方法吗?我猜我可以从第二个活动启动什么代码来重新启动第一个活动?我想这是一个更好的方法。你可以在第二个活动中做同样的事情。但将创建该活动的新实例。如果是这种情况,您需要清除后堆栈。那么,等等,在我的第二个活动中,所有这些都会进入onClick方法吗?我猜我可以从第二个活动启动什么代码来重新启动第一个活动?我想这是一个更好的方法。你可以在第二个活动中做同样的事情。但将创建该活动的新实例。在这种情况下,需要清除后堆栈。