2012-03-27 5 views
1

Программа не вызывает onActivityResult, я был во многих сообщениях, но я не могу заставить его работать.Деятельность не вызывает onActivityResult

Im, использующий эмулятор Android 3.0.

это код GameScreen.java

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode) { 
    case 0: { 
     if (resultCode == Activity.RESULT_OK) {  
      String newText = data.getStringExtra("isRunning");   
      // TODO Update your TextView. 
      isRunning = true; 
     } 
     break; 
    } 
    } 
} 
public void pause(){ 
    clickListener = new OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub    
      pause.setImageResource(R.drawable.pauseafter); 
      isRunning = false; 
      Intent intent = new Intent(Gamescreen.this, Shop.class);     
      startActivityForResult(intent, 0); 
     } 
    }; 
} 

это код Shop.java

public void returnButton(){ 
    resume.setOnClickListener(new OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent intent = new Intent(); 
      setResult(Activity.RESULT_OK,intent); 
      finish(); 
     } 
    }); 
} 
+0

попробуйте getIntent() вместо нового Intent(). возможно, он будет работать –

+0

ну, это не сработало «Intent intent = getIntent();'. –

ответ

3

Для проверки я создал простое приложение. Ничего необычного, просто макет по умолчанию и два вида деятельности. Тост в onActivityResult показан правильно.

Вот полный рабочий код:

файл OnReturnActivity.java:

package some.package; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Toast; 

public class OnReturnActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Intent i = new Intent(this, GimmeReturn.class); 
     startActivityForResult(i, 0); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     Toast.makeText(this, "Got Result " + String.valueOf(resultCode),  Toast.LENGTH_SHORT).show(); 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

файл GimmeReturn.java:

package some.package; 

import android.app.Activity; 
import android.os.Bundle; 

public class GimmeReturn extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Toast.makeText(this, "Returning!", Toast.LENGTH_SHORT).show(); 
     setResult(RESULT_OK); 
     finish(); 
    } 
} 

Оба мероприятия должны быть добавлены к Android проявить. Активность OnReturnActivity имеет действие MAIN и категорию LAUNCHER (и запускается как основное приложение для приложения). Активность GimmeResult просто добавлена ​​без IntentFilter.

+0

следует использовать это для класса 'setContentView (R.layout.main);'? –

+0

Спасибо человеку за образец. моя проблема заключалась в том, что у меня есть намерение Intent = new Intent(); 'если я правильно подумал в своем магазине.java. –

1

Просто используйте "RESULT_OK" .. Как это

Intent i=new Intent(); 
setResult(RESULT_OK,i); 
finish(); 

в OnActivityResult:

switch(requestcode) 
{ 
case 0: if(resultcode==RESULT_OK) 
    { 

      //Log.e("check","in OAR"); 
      } 
} 
+0

В чем разница? Я вижу некоторую разницу в вкусах, конечно, но ничего, что подсказывает, почему код @christian не работает? : curious: – Nanne

+0

не работает. мне нужно вызвать onActivityResult в классе/методе? –

+0

Это простая деятельность или Tabhost? – Abhi

0

Ваш код кажется мне ОК - ваш onActivityResult никогда не звонит или просто не ходит на случай 0: вы пытались его отладить. мне ничего не кажется необычным

+0

Я думаю, что он никогда не звонит, я попытался сделать вывод за пределами корпуса коммутатора, но он никогда не появляется. –

+0

есть у отлаживается это место точка отладки в onResume и onActivityResult –

0

Используйте setData из вызываемой деятельности.

+0

какой doest setData делать? –

+0

setData устанавливает данные из вызываемой Activity, которые могут быть получены из onActivityResult при вызове Activity.Make убедитесь, что вы ввели вызываемую активность в AndroidManifest.xml. –

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