当通过 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/