onActivityResult() 未在我的 Android 应用程序中触发
onActivityResult() is not firing in my Android application
我不知道问题是什么,我已经阅读了几乎所有相关问题,但对我的问题可能是什么感到困惑,Activity 运行良好,它在 finish()
方法,但在我的 MainActivity class 中什么也没做。我确保我的清单不会调用 noHistory
和 singleton
activity。我放了一些祝酒词和一组文本,但正在调用其中的 none。这是我的代码实现:
主Activity:
Intent placeShips = new Intent(this, SetShips.class); //MainActivity.this works too
startActivityForResult(placeShips, RESULT_OK);
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_OK && resultCode == RESULT_OK) {
Toast.makeText(MainActivity.this, "worked", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "worked", Toast.LENGTH_SHORT).show();
}
newGame.setText("PLS "); //these aren't being called either
toast("PLS");
}
被叫 Activity:
(请注意按钮工作正常)
setShips.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
setResult(RESULT_OK);
finish(); //return to main activity, giving intent with stored player information
}
});
进一步说明; toasts 在 setShips
按钮侦听器上正确显示,但是,没有任何内容传回 onActivityResult
方法,正如所解释的,甚至 toasts 也不显示。我还漏掉了什么吗?
你的结果代码应该是这样的
if (requestCode == RESULT_OK && resultCode == Activity.RESULT_OK) {
Toast.makeText(MainActivity.this, "worked", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "worked", Toast.LENGTH_SHORT).show();
}
您似乎没有正确设置请求代码。你需要做的:
static final int YOUR_CODE = 1;
Intent placeShips = new Intent(this, SetShips.class); //MainActivity.this works too
startActivityForResult(placeShips, YOUR_CODE);
那么你可以这样做:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == YOUR_CODE && resultCode == RESULT_OK) {
Toast.makeText(MainActivity.this, "worked", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "worked", Toast.LENGTH_SHORT).show();
}
newGame.setText("PLS "); //these aren't being called either
toast("PLS");
}
我不知道问题是什么,我已经阅读了几乎所有相关问题,但对我的问题可能是什么感到困惑,Activity 运行良好,它在 finish()
方法,但在我的 MainActivity class 中什么也没做。我确保我的清单不会调用 noHistory
和 singleton
activity。我放了一些祝酒词和一组文本,但正在调用其中的 none。这是我的代码实现:
主Activity:
Intent placeShips = new Intent(this, SetShips.class); //MainActivity.this works too
startActivityForResult(placeShips, RESULT_OK);
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_OK && resultCode == RESULT_OK) {
Toast.makeText(MainActivity.this, "worked", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "worked", Toast.LENGTH_SHORT).show();
}
newGame.setText("PLS "); //these aren't being called either
toast("PLS");
}
被叫 Activity: (请注意按钮工作正常)
setShips.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
setResult(RESULT_OK);
finish(); //return to main activity, giving intent with stored player information
}
});
进一步说明; toasts 在 setShips
按钮侦听器上正确显示,但是,没有任何内容传回 onActivityResult
方法,正如所解释的,甚至 toasts 也不显示。我还漏掉了什么吗?
你的结果代码应该是这样的
if (requestCode == RESULT_OK && resultCode == Activity.RESULT_OK) {
Toast.makeText(MainActivity.this, "worked", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "worked", Toast.LENGTH_SHORT).show();
}
您似乎没有正确设置请求代码。你需要做的:
static final int YOUR_CODE = 1;
Intent placeShips = new Intent(this, SetShips.class); //MainActivity.this works too
startActivityForResult(placeShips, YOUR_CODE);
那么你可以这样做:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == YOUR_CODE && resultCode == RESULT_OK) {
Toast.makeText(MainActivity.this, "worked", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "worked", Toast.LENGTH_SHORT).show();
}
newGame.setText("PLS "); //these aren't being called either
toast("PLS");
}