开发者

onActivityResult not being called

开发者 https://www.devze.com 2023-04-03 16:12 出处:网络
KitActivity: /** in KitActivity, handler invoked after successful transmission **/ private final Handler txHandle = new Handler() {

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(s开发者_Go百科uccess) {
            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 by the book. what's the issue?

stuff i've tried: - using Activity.RESULT_OK for the result code (which translates to -1); - removing the setResult() and finish() calls from the handler and calling an outside method to invoke them.

i don't see anything wrong. here's the manifest, nothing awry here:

<?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?


in the activity you start (KitActivity.class) on success you do this

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

else you put RESULT_CANCELED instead of RESULT_OK


replaced:

protected void onActivityResult(int reqCode, int resCode)

with:

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

amazing what happens when you review the documentation... -_-

0

精彩评论

暂无评论...
验证码 换一张
取 消