2013-06-24 2 views
1

활동에서 활동으로 Cordova, 플러그인을 통해 점프 할 때 추가 정보를 묶음에 넣고이를 의도와 함께 전달할 수 있기를 원합니다. 나는 문제는 현재 활동을 얻고 그때, 에서 onCreate 번들 전달에서 값을 카운터 설정하는 활동 정의를플러그인에서 활동을 확장하는 클래스에서 값 가져 오기

public int getCounter(){return counter;} 

를 통해 값을 얻는 것 같다.

다음 작업에 대한 의도를 수행 할 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(); 

내가 잘못하고 있어요 뭔가가 있나요? 나는 현재 액티브 한 액티비티를 얻고, 그 액티비티에서 public 함수를 호출하려고한다.

목표 끝 : int를 가져 와서 계속 intent로 전달하려고합니다. 그렇게하면 활동 체인이 얼마나 깊은 지 알 수 있습니다. 나는 중첩 된 상태를 저장하고 호기심에 대해 깊이있는 시간에 오전, 주어진 시간에 오전. 액티비티로 전달되는 tmp는 매번 증가하므로 깊이를 유지합니다.

답변

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. 
관련 문제