Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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
android应用的主屏幕?_Android - Fatal编程技术网

android应用的主屏幕?

android应用的主屏幕?,android,Android,我想去我的应用程序主页点击按钮,我在里面的页面。 有人能告诉我怎么做吗 谢谢你 Srinivas在您的按钮单击事件上添加以下代码行 moveTaskToBack(真)可能有两种方法(一般概念): 第一种方法是再次启动home activity,如果您不介意重新创建它,除非该活动是“singleTask”或“singleInstance”活动 第二种方法是关闭堆栈中的顶部活动,只要它不是您的主活动。我看不到一个简单的方法来实现这一点,可能是通过使用启动活动检查的特定结果来完成当前活动,启动活动将关

我想去我的应用程序主页点击按钮,我在里面的页面。 有人能告诉我怎么做吗

谢谢你


Srinivas

在您的按钮单击事件上添加以下代码行


moveTaskToBack(真)

可能有两种方法(一般概念):

第一种方法是再次启动home activity,如果您不介意重新创建它,除非该活动是“singleTask”或“singleInstance”活动


第二种方法是关闭堆栈中的顶部活动,只要它不是您的主活动。我看不到一个简单的方法来实现这一点,可能是通过使用启动活动检查的特定结果来完成当前活动,启动活动将关闭并发送结果,直到到达主活动。

我建议创建一个
应用程序
类。在该类中,有一个默认为false的布尔字段。每个
活动
都应检查
onResume()
中的字段是否为真,如果为真,则调用
finish()
(除了在
onResume()
中始终将字段设置为
false的主活动)。您甚至可以创建一个自定义的
活动来执行此操作,然后让所有活动扩展该活动

资源:

  • android.app.Application类

    android.app.Application是需要维护全局应用程序状态的基类。可以通过getApplication()从任何活动或服务访问它。它有几个生命周期方法,如果您在AndroidManifest.xml中注册它,它将由Android自动实例化

  • 参考:

简化示例:

MyApp

public class MyApp extends Application { public boolean goBack = false; }
MyActivity

public class MyActivity extends Activity {
    protected void onResume() {
        if ( ((MyApp) getApplication()).goBack ) finish();
    }
}
public class SomeActivity extends MyActivity {
    // nothing special here, it's all been implemented in MyActivity!
}
public class MainActivity extends Activity {
    protected void onResume() {
        ((MyApp) getApplication()).goBack = false;
    }
}
SomeActivity

public class MyActivity extends Activity {
    protected void onResume() {
        if ( ((MyApp) getApplication()).goBack ) finish();
    }
}
public class SomeActivity extends MyActivity {
    // nothing special here, it's all been implemented in MyActivity!
}
public class MainActivity extends Activity {
    protected void onResume() {
        ((MyApp) getApplication()).goBack = false;
    }
}
main活动

public class MyActivity extends Activity {
    protected void onResume() {
        if ( ((MyApp) getApplication()).goBack ) finish();
    }
}
public class SomeActivity extends MyActivity {
    // nothing special here, it's all been implemented in MyActivity!
}
public class MainActivity extends Activity {
    protected void onResume() {
        ((MyApp) getApplication()).goBack = false;
    }
}
AndroidManifest.xml

[...] <application android:name=".MyApp" [...]> [...]
[…][…]

注意:您不需要在
AndroidManifest.xml
中声明
MyActivity
,因为它永远不会直接启动(只会被扩展)。

它将进入主屏幕,但我需要切换到我的应用程序的主页,即;到MainActivity。对不起,我没有正确阅读您的问题。。。。我想你已经得到了部分答案。您可以将父活动保留为singleTask,当您从其他地方调用主活动时,请设置此标志INTERNAT.flag\U ACTIVE\U CLEAR\U TOP。因此,它们之间的所有活动都将得到完成。我不推荐第一个“解决方案”,因为这将创建一个活动循环(main->other->main->other->main),这可能会非常烦人。我尝试了第一个解决方案,正如你所说,循环形成,当我单击“上一步”时。请告诉我如何继续第二个解决方案?如果调用startActivityForResult(),如果覆盖onActivityResult(),则可以从启动的活动中获得返回值。然后,您可以根据返回的值检查是否应关闭当前活动。谢谢您,伙计。谢谢您的解决方案。