gpt4 book ai didi

android - 将 Activity 重定向到另一个 Activity 的动态方式 - android?

转载 作者:行者123 更新时间:2023-11-29 19:31:10 24 4
gpt4 key购买 nike

我有一个应用有很多 Adapter 我正在使用 setOnClickListener 从一个 Activity 重定向到另一个 Activity 。

问题:

在每个适配器中我应该写:

Intent intent = new Intent(activity.getApplicationContext(), another.class);
activity.startActivity(intent);

我可以使用动态方式从 Activity 重定向到另一个 Activity 吗(有时我需要在 Activity 之间传输一些数据)。

最后:

我只写一次并用于其他 Activity 。

最佳答案

如果您有很多 Activity ,这是一个常见问题。我通过使用像这样的单例 Navigator 类解决了这个问题:

public class Navigator {

private static Navigator instance;

private Navigator() {
}

public static Navigator getInstance() {
if (instance == null) {
synchronized (Navigator.class) {
if (instance == null) {
instance = new Navigator();
}
}
}
return instance;
}

public void navigateToSubActivity(Context context, String data) {
Intent subAct = SubActivity.getCallingIntent(context);
// This is the data where you want to send to target activity.
subAct.putExtra("DATA", data);
context.startActivity(subAct);
}
}

然后在每个 Activity 中,您应该添加静态方法,例如(这里是 SubActivity 类的示例):

/**
* Returns the intent for this activity
*
* @param context {@link Context}
* @return {@link Intent}
*/
public static Intent getCallingIntent(Context context) {
return new Intent(context, SubActivity.class);
}

最后,您可以愉快地导航到另一个 Activity ,方法是:

Navigator.getInstance().navigateToSubActivity(this, "my data");

请记住,当你想要捕获之前发送的 bundle 数据时,你需要在接收方Activity onCreate()中添加以下代码:

Bundle extras = getIntent().getExtras();
mData = extras.getString("DATA");
// process the data after we receive it.

注意:

如果我没记错的话,我想这是我对 Navigator class 所做的细微修改。来自 Android-CleanArchitecture尽管没有注入(inject)

关于android - 将 Activity 重定向到另一个 Activity 的动态方式 - android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com