Активность не вызывает onActivityResult

1

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

Я использую эмулятор 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(); ,
Теги:
android-activity

4 ответа

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 intent = new Intent(); если я правильно думал в моем shop.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 не работает? : Любопытно:
  • 0
    это не работает я должен вызвать onActivityResult в классе / метод?
Показать ещё 3 комментария
0

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

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

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

  • 0
    что делать setData делать?
  • 0
    setData устанавливает данные из вызываемой Activity, которые можно получить из onActivityResult при вызове Activity. Убедитесь, что вы ввели вызванную активность в AndroidManifest.xml.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню