OnActivityResult not called

KitActivity:

/** in KitActivity, handler invoked after successful transmission **/ private final Handler txHandle = new Handler() { @Override public void handleMessage(Message msg) { boolean success = msg.getData().getBoolean("success"); dismissDialog(DIALOG_TX_PROGRESS); if(success) { SharedPreferences.Editor editor = mPrefs.edit(); editor.putInt("previous_scale", mScaleSpn.getSelectedItemPosition()); editor.commit(); //clearFields(); //showDialog(DIALOG_ETX); KitActivity.this.setResult(0); KitActivity.this.finish(); } else { removeDialog(DIALOG_FAIL); showDialog(DIALOG_FAIL); } } }; 

MainActivity:

 /** in the MainActivity **/ public void startCreateKit() { Intent i = new Intent(MainActivity.this, KitActivity.class); startActivityForResult(i,0); } protected void onActivityResult(int reqCode, int resCode) { if(reqCode==0) { if(resCode==0) { //we good, perform sync showDialog(DIALOG_TX_PROGRESS); Toast.makeText(this, "Performing Auto Sync", Toast.LENGTH_LONG).show(); updateKits(); } else { //uh oh } } } createKitBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Toast.makeText(context, "NEW KIT", Toast.LENGTH_SHORT).show(); startCreateKit(); } }); 

onActivityResult is never called in MainActivity. this is pretty much a book. what is the problem?

things I tried: - using Activity.RESULT_OK for the result code (which converts to -1); - removing setResult () and finish () calls from the handler and calling an external method to call them.

I do not see anything wrong. here is the manifesto, there is nothing to worry about:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.conceptualsystems.kitmobile" android:versionCode="8" android:versionName="@string/version"> <application android:label="@string/app_name" android:icon="@drawable/icon" android:debuggable="true"> <activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="ShipActivity" android:label="Ship Kits" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"> </activity> <activity android:name="KitActivity" android:label="Kit Entry" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"> </activity> <activity android:name="ColorActivity" android:label="Color Selection" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"> </activity> </application> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> </manifest> 

what gives?

0
source share
2 answers

replace:

 protected void onActivityResult(int reqCode, int resCode) 

with:

 protected void onActivityResult(int reqCode, int resCode, Intent intent) 

amazing what happens when you look at the documentation ... -_-

0
source

at the beginning of the action (KitActivity.class) upon successful completion of this action

 Intent intent = this.getIntent(); intent.putExtra("SOMETHING", "EXTRAS"); this.setResult(RESULT_OK, intent); finish(); 

otherwise you put RESULT_CANCELED instead of RESULT_OK

+1
source

Source: https://habr.com/ru/post/971812/


All Articles