活动不叫onActivityResult [英] Activity does not call onActivityResult
问题描述
节目犯规致电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(isRunning);
// 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.
这篇关于活动不叫onActivityResult的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!