onActivityResult не работает в Android - PullRequest
1 голос
/ 25 октября 2010

У меня есть основное действие под названием Main, которое имеет метод onActivityResult.

protected void onActivityResult(int requestCode, int resultCode, Intent data, Bundle extras)
{       
    Log.i("in OnActivityResult", "in OnActivityResult");
    super.onActivityResult(requestCode, resultCode, data);
    Log.i("in OnActivityResult", "in OnActivityResult");
    ObjectInputStream ois = null;
    if(requestCode == SUB_ACTIVITY_REQUEST_CODE)
    {
        Log.i("in OnActivityResult IFFFF", "in OnActivityResult IFFFF");
        extras = getIntent().getExtras();
        byte gpBytes[] = extras.getByteArray("gpBytes");

        ByteArrayInputStream bis = new ByteArrayInputStream(gpBytes);
        try
        {
            ois = new ObjectInputStream(bis);
            gpObject = (GP) ois.readObject();
        }
        catch (StreamCorruptedException e)
        {                               
            e.printStackTrace();
        } 
        catch (IOException e) 
        {           
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    Log.i("GP object Values", "GP object Values<<>>"+ this.gpObject.xValue + "and <<>>" + this.gpObject.yValue); 

}

, и во втором упражнении я написал этот код для кнопки Action.

public void onClick(View v) {
        Log.i("button", "button");
        goToGrifReferenceAction();

        GridReferenceActivity.this.setResult(RESULT_OK, getIntent().putExtra("gpObject", GridReferenceActivity.this.gpBytes));
        GridReferenceActivity.this.finish();
    }

, поэтому проблема сейчаскогда второе действие заканчивается.onActivityResult не вызывает в основной деятельности ... может кто-нибудь сказать мне, где я иду не так.

и я называю второе действие, как это.

@Override
        public void onClick(View v)
        {                           
            Intent i = new Intent(Main.this, GridReferenceActivity.class);
            startActivityForResult(i, SUB_ACTIVITY_REQUEST_CODE);
        }

и вот мое проявлениефайл

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.anquetMap"
  android:versionCode="1"
  android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable = "true">
    <activity android:name=".Main"
              android:label="@string/app_name"  android:configChanges="keyboardHidden|orientation" android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>     
    <activity android:name=".GridReferenceActivity"  android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.GridReferenceActivity"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Я буду ему очень благодарен.Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 25 октября 2010

Ваши два действия должны быть в одной задаче ...

Вы определили "singleTask" в Android: launchMode?

0 голосов
/ 25 октября 2010

Я просто использовал метод с тремя аргументами, защищенный void onActivityResult (int requestCode, int resultCode, Intent data) {}

, и это сработало.

0 голосов
/ 25 октября 2010

Как вы начинаете второе занятие, которое используете

startActivity (намерение)

или

startActivityForResult (намерение, намерение, int requestCode)

Вы должны использовать

Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, SUB_ACTIVITY_REQUEST_CODE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...