活动不叫onActivityResult不叫、onActivityResult

2023-09-12 22:25:16 作者:坐在坟前调戏鬼

节目犯规致电onActivityResult,我一直都很多职位因为这样,但我不能使它发挥作用。

采用Android 3.0模拟器林。

这是GameScreen.java的code

  @覆盖
公共无效onActivityResult(INT申请code,INT结果code,意图数据){
  super.onActivityResult(要求code,因此code,数据);
  开关(要求code){
    情况下0:{
      如果(结果code == Activity.RESULT_OK){
          串newText = data.getStringExtra(isR​​unning);
          // TODO更新您的TextView。
          isRunning = TRUE;
      }
      打破;
    }
  }
}
 公共无效暂停(){
    clickListener =新OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){
            // TODO自动生成方法存根
            pause.setImageResource(R.drawable.pauseafter);
            isRunning = FALSE;
            意向意图=新的意图(Gamescreen.this,Shop.class);
            startActivityForResult(意向,0);
        }
    };
}
 

这为c Shop.java的$ C $

 公共无效returnButton(){
    resume.setOnClickListener(新OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){
            // TODO自动生成方法存根
            意向意图=新的意图();
            的setResult(Activity.RESULT_OK,意图);
            完();
        }
    });
}
 
多视角展现侨乡人民的幸福感 这场宣讲活动,让许多人红了眼眶

解决方案

为了测试我创建简单的应用程序。没有什么特别的,只是默认的布局和两个活动。吐司在 onActivityResult 的正常显示。

下面是完整的工作code:

文件 OnReturnActivity.java

 包some.package;

进口android.app.Activity;
进口android.content.Intent;
进口android.os.Bundle;
进口android.widget.Toast;

公共类OnReturnActivity延伸活动{
    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);

        意图I =新的意图(这一点,GimmeReturn.class);
        startActivityForResult(ⅰ,0);
    }

    @覆盖
    保护无效onActivityResult(INT申请code,INT结果code,意图数据){
        // TODO自动生成方法存根
        Toast.makeText(这一点,得到结果+将String.valueOf(结果code),Toast.LENGTH_SHORT).show();
        super.onActivityResult(要求code,因此code,数据);
    }
}
 

文件 GimmeReturn.java

 包some.package;

进口android.app.Activity;
进口android.os.Bundle;

公共类GimmeReturn延伸活动{
    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);

        Toast.makeText(这一点,返回!,Toast.LENGTH_SHORT).show();
        的setResult(RESULT_OK);
        完();
    }
}
 

这两个活动需要被添加到Android清单。活动 OnReturnActivity 的主要行动和类别启动器(并开始为应用程序的主活动)。活动 GimmeResult 只是没有添加任何的IntentFilter。

the program doesnt call onActivityResult, ive been in many post as this but i cant make it work.

Im using Android 3.0 Emulator.

this is the code of 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);
        }
    };
}

this is the code 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();
        }
    });
}   

解决方案

To test I've created simple application. Nothing fancy, just default layout and two activities. Toast in onActivityResult is shown properly.

Here's complete working code:

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

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

Both activities need to be added to Android manifest. Activity OnReturnActivity has action MAIN and category LAUNCHER (and is started as main activity for application). Activity GimmeResult is just added without any IntentFilter.