我正在开发一个可以读取汽车数据的应用程序。
当用户第一次打开它时,他必须选择他驾驶的汽车(在MainActivity中)。
我要做的是,用户在打开应用程序时不能总是选择自己的车。
用户选择一次汽车后,该应用程序应直接转到其汽车的汽车数据活动。
你能给我一些想法怎么做吗?
我已经在AndroidManifest中写道MainActivity和此汽车数据活动是启动器活动,但我认为这将无法正常工作,因为应用程序应如何知道哪个活动应是启动活动。
请帮我一下!
答案 0 :(得分:6)
您可以在此过程中使用 SharedPreference 。
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(YourLaunchActivity.this);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean("isCarSet", true);
editor.apply();
然后检查“每次启动”活动
if (sharedpreferences.getBoolean("isCarSet", false)) {
Intent i =new Intent(YourLaunchActivity.this,SecondActivty.class);
startActivity(i);
finish();
}
我建议您使用共享首选项。
答案 1 :(得分:0)
因此,在这种情况下,您可以使用共享的首选项。将数据注册到“共享首选项”后,每次启动该应用时,都会从“共享首选项”中读取数据,然后直接转到所需页面。
共享首选项的示例代码:
设置首选项中的值:
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("name", "Elena");
editor.putInt("idName", 12);
editor.apply();
从偏好设置中检索数据:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0); //0 is the default value.
}
更多帮助:https://developer.android.com/guide/topics/data/data-storage#pref
另一种方法是使用会话,但是在起步阶段,我建议您使用共享首选项。
答案 2 :(得分:0)
您应该创建两个活动:
-MainActivity(清单中标记为启动器活动),用于显示汽车数据。
-选择汽车的CarChooseActivity。
在MainAcitivity的onResume()方法上尝试读取汽车数据(从SharedPreferences或其他来源)。如果成功,则向您显示汽车数据,否则打开CarChooseActivity。
类似的东西:
public class MainActivity extends AppCompatActivity {
//code omitted
@Override
protected void onResume() {
super.onResume();
Car car = readCar();
if (car == null){//no car saved
Intent i = new Intent(this, CarChooseActivity.class);
startActivity(i);
}
}
//code omitted
}
public class CarChooseActivity extends AppCompatActivity {
Button mSaveButton;
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
//code omitted
mSaveButton = findViewById(R.id.savebutton);
mSaveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveCar();//save choosed car to SharedPreferences or other storage
finish();
}
});
//code omitted
}
}