簡體   English   中英

從插件的類擴展活動中獲取價值

[英]Getting a value from a class extending activity in a plugin

當通過Cordova插件從Activity跳轉到Activity時,我希望能夠將其他信息放入包中並與意圖一起傳遞。 我似乎在獲取當前活動然后通過獲取值方面遇到問題

public int getCounter(){return counter;}

我有一個活動定義, onCreate將計數器設置為傳入的包中的值。

我有一個Cordova插件,然后我正在使用它,它將執行下一個活動的意圖。

回聲類是一種中介,它將基於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時,似乎會導致某種段錯誤:

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

我做錯什么了嗎? 我試圖獲取當前活動的活動,然后在該活動中調用公共函數。

最終目標:我正在嘗試獲取一個int,並不斷將其傳遞到intent中。 這樣,它將知道它在活動鏈中有多深。 我正在努力進行嵌套狀態保存,並且對在任何給定時間的深度感到好奇。 傳遞到活動中的tmp每次都會增加,因此它將保持深度。

與其使用get counter創建類,不如將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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM