从扩展插件中的活动的类中获取值

时间:2013-06-24 21:07:46

标签: java android cordova android-activity

当通过Cordova插件从Activity跳转到活动时,我希望能够将其他信息放入一个包中并将其与意图一起传递。我似乎在获取当前活动时遇到问题,然后通过

获取值
public int getCounter(){return counter;}

我有一个活动定义, onCreate 将设置计数器来自传入的包中的值。

我有一个我正在使用的Cordova插件,它将执行下一个活动的意图。

Echo Class是一个基于html点击的活动之间的跳跃。

//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中为tmp分配计数器时,它似乎会引起各种类型的错误:

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

我有什么问题吗?我正在尝试获取当前活动的活动,然后在该活动中调用公共函数。

结束目标:我正在尝试获取一个int,并继续将其传递给意图,递增。这样,它就会知道活动链的深度。我正在研究嵌套状态保存,并对任何给定时间的深度感到好奇。传递给活动的tmp每次都会递增,因此它将保持深度。

1 个答案:

答案 0 :(得分:0)

不是使用get计数器创建一个类,而是将int存储在Bundle中并将其传递给下一个活动将会容易得多。

示例:

//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();
//...

然后是下一个活动。

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

然后你可以用它做你想做的事。答案整体而前一个活动为旧号码。那是什么意思?这意味着在将其传递给下一个活动时,您可以使用它增加并执行任何操作。它被复制,因此您可以递增地递增并存储它。甚至可以说:

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