gpt4 book ai didi

java - 从插件中扩展 Activity 的类获取值

转载 作者:行者123 更新时间:2023-12-01 04:36:23 26 4
gpt4 key购买 nike

当通过 Cordova 插件从 Activity 跳转到 Activity 时,我希望能够将附加信息放入 bundle 中,并将其与 Intent 一起传递。我似乎在获取当前 Activity 然后通过

获取值时遇到问题
public int getCounter(){return counter;}

我有一个 Activity 定义,onCreate 会将计数器设置为传入包中的值。

我有一个 Cordova 插件,我正在使用它,它将执行下一个 Activity 的 Intent 。

Echo Class 是一个中介,它将根据 html 点击在不同的 Activity 之间跳转。

//In the Class:   public class Echo extends CordovaPlugin
private void launchSecondActivity(String data, CallbackContext cc){
Bundle b = new Bundle();
int tmp = ((SecondaryActivity)cordova.getActivity()).getCounter();
tmp++;
b.putInt("id", tmp);
Intent i = new Intent(cordova.getActivity().getApplicationContext(), SecondaryActivity.class);
i.putExtras(b);
cordova.getActivity().startActivity(i);

cc.success();
}

当我尝试将计数器分配给 tmp 时,它似乎会导致某种段错误:

int tmp = ((SecondaryActivity)cordova.getActivity()).getCounter();

我做错了什么吗?我试图获取当前 Activity 的 Activity ,然后调用该 Activity 中的公共(public)函数。

最终目标:我正在尝试获取一个 int,并不断将其传递到 Intent 中,并递增。这样,它就会知道它在 Activity 链中的深度。我正在研究嵌套状态保存,并且对我在任何给定时间所处的深度感到好奇。传入 Activity 的 tmp 每次都会递增,因此它将保持一定的深度。

最佳答案

与其创建一个带有 get counter 的类,不如将 int 存储在 Bundle 中并将其传递给下一个 Activity ,这样会容易得多。

示例:

//send item to plugin.
int item = 0; // or whatever it is
Bundle b = new Bundle();
b.put("ident", item);
Intent i = new Intent();
i.putExtras();
//...

然后进行下一个 Activity 。

public void onCreate(Bundle savedInstanceState)
{
int item = getIntent().getExtras().getInt("ident");
}

然后你就可以用它做你想做的事了。答案总体上与之前的 Activity 相同。这意味着什么?这意味着您可以在将其传递到下一个 Activity 时对其进行增量并执行任何您想要的操作。它被复制,因此您可以递增并递归存储它。甚至允许您说这样的话:

if (item ==0){/*set new source for Activity*/}
else if(item == 1){/*set source 2*/}
//etc.

关于java - 从插件中扩展 Activity 的类获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17285158/

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