Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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_Homescreen - Fatal编程技术网

Java 如果用户已经将我的应用程序设置为主屏幕,是否有简单的方法切换家庭活动?

Java 如果用户已经将我的应用程序设置为主屏幕,是否有简单的方法切换家庭活动?,java,android,homescreen,Java,Android,Homescreen,我正在制作一个应用程序,但基本上有两个不同的主屏幕,尽管相似。有一个主屏幕指定供个人使用,另一个主屏幕明确用于商业用途。两个主屏幕都是启动器,您可以从中启动与该主屏幕对应的应用程序 现在,我将主屏幕设置为: ComponentName component = new ComponentName(HomeScreen1.class.getPackage().getName(), HomeScreen1.class.getName()); packageManager.setComponentEna

我正在制作一个应用程序,但基本上有两个不同的主屏幕,尽管相似。有一个主屏幕指定供个人使用,另一个主屏幕明确用于商业用途。两个主屏幕都是启动器,您可以从中启动与该主屏幕对应的应用程序

现在,我将主屏幕设置为:

ComponentName component = new ComponentName(HomeScreen1.class.getPackage().getName(), HomeScreen1.class.getName());
packageManager.setComponentEnabledSetting(component, packageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
当我启动一个个人应用程序,然后按Home,我希望它进入个人应用程序主屏幕,当我在业务主屏幕上时,这只是一个不同的活动,你可以通过按下第一个主屏幕上的按钮进入,如果我启动一个业务应用程序,我希望按Home将我带到第二个主屏幕

我意识到实现这一点的一种方法是只进行一个主屏幕活动,并对setContentView参数进行某种更改,使其在视觉上发生变化,但这变得非常难以管理。由于用户已将我的应用程序指定为主屏幕替换应用程序,即使从技术上讲,只有一个活动被指定为主屏幕,我想知道当用户按下主屏幕按钮时,是否有办法通过一些控制语句启动两个主屏幕中的一个

它不一定是那么简单的解决方案,但基本上,如果可能的话,我试图避免不断重写setContentView方法


编辑:如果不清楚,我有HomeCreenPersonal和HomeCreenBusiness,目前按Home按钮总是会将您带到HomeCreenPersonal。我想知道是否有一种方法可以轻松地拥有两个主屏幕,主屏幕基本上依赖于某个高级布尔值。

您可以使用SharedReference存储任何应用程序范围的变量。下面是一个关于如何使用SharedReferences的示例


如果您想为用户提供更多选项(如更改主屏幕),您可能需要按照本指南的建议创建一个设置活动。

我找到了一种有趣且实用的方法来获得所需的行为。基本上只创建一个主屏幕,包括:


然后,与其让这两个对象成为活动对象,不如让它们成为常规类,其构造函数指定setContentView。拥有多个主屏幕的方式相当干净。

假设用户选择HomeScreenPersonal,之后是否应该一直转到HomeScreenPersonal?这是两种不同的活动,具有应用程序的网格视图。每个屏幕的底部都有一个按钮,可以将您带到另一个屏幕。如果你从Personal启动应用程序,当你按Home键时,我希望你回到Personal。如果你从Business启动应用程序,当你按Home键时,我希望你重新投入业务。目前,无论你启动什么,你都会回到个人,因为这是我整个应用程序的主要家庭活动。我想最好的办法可能是创建一个不同的家庭活动,其onCreate为ifpersonal intent=Personal;else intent=business这不是我真正想要的,有几种方法可以创建高级布尔值,可以使用SharedReference,也可以使用某个类的静态值。我想要的是能够接受这个布尔值并改变哪个活动是主屏幕。默认情况下,将应用程序替换为主屏幕时,只有一个活动与主屏幕关联。
public static boolean personalMain = true;

private Activity activity = this;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (personalMain) {
        new HomeScreenPersonal(activity);
    } else {
        new HomeScreenBusiness(activity);
    }
}