如何在 android 工作室从不同的 Activity 开始
how to start from different Activity in android studio
我制作的应用有两个活动。
首先有:
- 2 ExitText(登录名和密码);
- 按钮(确认,使用 SharedPreferences 保存数据,意图秒 activity)。
第二个:
- 2 TextView(使用 SharedPreferences 获取登录名和密码);
- 按钮(清除 SharedPreferences 上的数据,用于 firsActivity)。
下一步怎么做:虽然 SharedPreferences 上有一些数据 - 应用程序将从第二个屏幕启动。
例如,我做了:
if (user!=null && pass!=null){ Intent enterIntent = new Intent(MainActivity.this,SecondActivity.class);
开始活动(进入意图);
}
但是,从技术上讲,它首先 运行 firstActivity 然后转到 secondOne。如果有一些方法可以用另一个activity(不是mainOne)启动应用程序?
在输入 Activity.
之前,您将无法检查 SharedPreferences 中是否有值
你可以做的是在显示 UI 之前检查值(在调用 setContentView(R.layout.my_layout)
之前),然后继续,或者开始下一个 Activity.
public class MyStartActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences preferences = getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
if (preferences.contains("my_key")) {
// start next Activity
}
setContentView(R.layout.my_layout);
}
}
我不确定它是否会起作用,因为应用程序必须从第一个 activity 开始。首先 activity 检查登录并通过共享首选项然后您可以转到第二个 activity
如果您不希望第一个出现在返回堆栈中,您可以在启动第二个之后调用 finish()(或有意地使用适当的标志)。
另一种方法是只有一个 activity 片段并动态决定开始时设置哪一个。使用片段,您还可以在单击按钮或按下后退时轻松更改布局。
试试这个
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences preference = getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
if (preference.getSting("key",null)!= null) {
// start new Activity
//finish this activity so it not in back stack
} else {
setContentView(R.layout.my_layout);
}
}
我制作的应用有两个活动。 首先有:
- 2 ExitText(登录名和密码);
- 按钮(确认,使用 SharedPreferences 保存数据,意图秒 activity)。
第二个:
- 2 TextView(使用 SharedPreferences 获取登录名和密码);
- 按钮(清除 SharedPreferences 上的数据,用于 firsActivity)。
下一步怎么做:虽然 SharedPreferences 上有一些数据 - 应用程序将从第二个屏幕启动。
例如,我做了:
if (user!=null && pass!=null){ Intent enterIntent = new Intent(MainActivity.this,SecondActivity.class); 开始活动(进入意图); }
但是,从技术上讲,它首先 运行 firstActivity 然后转到 secondOne。如果有一些方法可以用另一个activity(不是mainOne)启动应用程序?
在输入 Activity.
之前,您将无法检查 SharedPreferences 中是否有值你可以做的是在显示 UI 之前检查值(在调用 setContentView(R.layout.my_layout)
之前),然后继续,或者开始下一个 Activity.
public class MyStartActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences preferences = getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
if (preferences.contains("my_key")) {
// start next Activity
}
setContentView(R.layout.my_layout);
}
}
我不确定它是否会起作用,因为应用程序必须从第一个 activity 开始。首先 activity 检查登录并通过共享首选项然后您可以转到第二个 activity
如果您不希望第一个出现在返回堆栈中,您可以在启动第二个之后调用 finish()(或有意地使用适当的标志)。
另一种方法是只有一个 activity 片段并动态决定开始时设置哪一个。使用片段,您还可以在单击按钮或按下后退时轻松更改布局。
试试这个
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences preference = getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
if (preference.getSting("key",null)!= null) {
// start new Activity
//finish this activity so it not in back stack
} else {
setContentView(R.layout.my_layout);
}
}