Android getting RESULT_CANCELED when I specifically add RESULT_OK -


this problem, have main view shows 1 button, pressing button view shown. view has button, when button push current view finishs , control backs previous view.

to show second view use startactivityforresult, put code here.

private void startnewview() {            intent = new intent(getapplicationcontext(), newview.class);     startactivityforresult(it,view_id);  } 

the view called has button event, here code

button b = (button) findviewbyid(r.id.close);     b.setonclicklistener(new view.onclicklistener() {          public void onclick(view v) {             setresult(result_ok);                            finish();          }     }); 

and finally, method onactivityresult in main view, here code

protected void onactivityresult(int requestcode, int resultcode, intent data) {      super.onactivityresult(requestcode, resultcode, data);     if(requestcode == view_id && resultcode == result_ok) {         tv = (textview) findviewbyid(r.id.tv);         tv.settext("the result ok  here :)");     }  } 

the problem resultcode 0 = result_canceled , not know how solve it, can me?

thank much!

i can't explain happening in code have project sample this..

a fooactivity button btnfoo:

@override protected void onstart() {     super.onstart();      btnfoo.setonclicklistener( new view.onclicklistener() {          @override         public void onclick(view v) {             startactivityforresult(new intent("xper.activity.activity_bar_intent"),1);         }     }); } 

and baractivity added in androidmanifest.xml that:

<activity     android:name = "baractivity">     <intent-filter>         <action             android:name = "xper.activity.activity_bar_intent"/>         <category             android:name = "android.intent.category.default"/>     </intent-filter> </activity> 

the respective code retrieve intent inside bar in onclicevent of btnbar (button):

@override protected void onstart() {     super.onstart();      btnbar.setonclicklistener( new view.onclicklistener() {          @override         public void onclick(view v) {             intent intent = new intent("xper.activity.activity_bar_result_intent");             intent.putextra("codbar", "bar");             setresult(activity.result_ok, intent);             finish();          }     }); } 

now, if doesn't handled onactivityresult() event, when press android button "back", can errors.

if intent (intention) in activity b give information activity a, if press button back, don't know if activity b in stack, intention isn't done. did following:

@override public void onbackpressed() {     // todo auto-generated method stub     super.onbackpressed();      //intent intent = new intent("xper.activity.activity_bar_result_intent");     //intent.putextra("codbar", "bar");     //setresult(activity.result_canceled, intent);     setresult(activity.result_canceled);     finish(); } 

handling information did following in event onactivityresult() see retrieved information in bar activity:

@override protected void onactivityresult(int requestcode, int resultcode, intent data) {     super.onactivityresult(requestcode, resultcode, data);     if(data != null) {         toast.maketext(this, "bar\trequestcode == " + requestcode + "\tresultcode  == " + resultcode + "\tdata == " + data, 10000).show();         btnfoo.settext("bar\trequestcode == " + requestcode + "\tresultcode  == " + resultcode + "\tdata == " + data /*+ "extras == " + data.getextras().getstring("codbar")*/);     } else {         toast.maketext(this, "bar\trequestcode == " + requestcode + "\tresultcode  == " + resultcode, 10000).show();         btnfoo.settext("bar\trequestcode == " + requestcode + "\tresultcode  == " + resultcode);     }  } 

if have more activities return infomation parent activity pratices following:

//put private static final int globals atributes respective name of //activity represent requestcode each activity have like: private static final int activity1 = 117; private static final int activity2 = 118; ... private static final int activityn = 215;  //in event onactivityresult() better use switch statement handle each //specific activity catch information @override protected void onactivityresult(int requestcode, int resultcode, intent data) {     super.onactivityresult(requestcode, resultcode, data);      if(resultcode == activity.result_canceled) return; // breaks     //if decide handle information of activity.result_canceled     //ignore above condition returns , handle inside switch statement      switch(requestcode) {     case activity1:     {         //dosomething     } break;     case activity2:     {         //dosomething     } break;     ...     case activityn:     {         //dosomething     } break;     } } 

if can't sample code.. please give me email me send foobaractivity project


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -