具有多个启动器活动

时间:2018-08-31 09:36:02

标签: android android-activity android-manifest android-launcher start-activity

我正在开发一个可以读取汽车数据的应用程序。
当用户第一次打开它时,他必须选择他驾驶的汽车(在MainActivity中)。
我要做的是,用户在打开应用程序时不能总是选择自己的车。
用户选择一次汽车后,该应用程序应直接转到其汽车的汽车数据活动。
你能给我一些想法怎么做吗?

我已经在AndroidManifest中写道MainActivity和此汽车数据活动是启动器活动,但我认为这将无法正常工作,因为应用程序应如何知道哪个活动应是启动活动。
请帮我一下!

3 个答案:

答案 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
    }
}