2010-10-25 2 views
1

У меня есть основное действие Main, у которого есть метод onActivityResult.onActivityResult Не работает в android

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); 
     } 

и вот мой menifest файл

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

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

+0

Выполняет ли действие, которое должно установить результат, внутри «TabHost» или другого экземпляра 'ViewGroup'? – Mannaz

+0

Ваш код для вспомогательной активности не передаёт requestCode при завершении операции, он должен быть чем-то вроде finishActivity (requestCode); – PravinDodia

ответ

4

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

Вы определили «singleTask» в android: launchMode?

+0

да, но я все же не работал. – sajjoo

+2

удалить singleTask – GBouerat

+1

, если вы установили singleTask, вы не можете использовать startActivityForResult() beacuse, ваши действия не будут в одной и той же задаче – GBouerat

0

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

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

или

startActivityForResult (Намерение Намерение, внутр requestCode)

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

Intent intent = new Intent(this, SecondActivity.class); 
startActivityForResult(intent, SUB_ACTIVITY_REQUEST_CODE); 
+0

Я использую StartActivityForResult (i, requestCode); но все же это не сработает. – sajjoo

0

я просто использовал три метод аргумента защищенных недействительный onActivityResult (интермедиат requestCode, внутр ResultCode, Намерение данные) {}

, и она работала.

Смежные вопросы