Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onActivityResult返回值太晚_Java_Android_Variables_Onactivityresult_Startactivityforresult - Fatal编程技术网

Java onActivityResult返回值太晚

Java onActivityResult返回值太晚,java,android,variables,onactivityresult,startactivityforresult,Java,Android,Variables,Onactivityresult,Startactivityforresult,我有2D字符串数组,我随机选取一个字段。若为空,应用程序弹出一个带有编辑文本和按钮的窗口,该窗口将覆盖该字段。弹出窗口返回包含editText内容的意图,并调用finish()。 我试图从函数中返回一个字符串,该字符串startActivityForResult(this,popupWindow)。但它会返回null,稍后当我不希望它这样做时,它会覆盖字符串 在活动一中: String returned_string_to_add; protected void onCreate(Bundle

我有2D字符串数组,我随机选取一个字段。若为空,应用程序弹出一个带有编辑文本和按钮的窗口,该窗口将覆盖该字段。弹出窗口返回包含editText内容的意图,并调用
finish()
。 我试图从函数中返回一个字符串,该字符串
startActivityForResult(this,popupWindow)
。但它会返回null,稍后当我不希望它这样做时,它会覆盖字符串

在活动一中:

String returned_string_to_add;

protected void onCreate(Bundle savedInstanceState) {
    [....]
    int[] thrown= throwCoin(cols,rows); //create int[2] with random numbers

    [....]
    if (board[thrown[0]][thrown[1]]==null){
        board[thrown[0]][thrown[1]]=addTask();
        Log.wtf( "check_board",  board[thrown[0]][thrown[1]]);
        Log.wtf( "intent",  returned_string_to_add);
    }
private String addTask() {
    returned_string_to_add=null;
    Intent intent=new Intent(this,PopupQuestion.class);
    startActivityForResult(intent,1);

    //I expect to get results here.
    return returned_string_to_add;
}
    
    
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == 1)&&(resultCode == Activity.RESULT_OK)){
                    super.onActivityResult(requestCode,resultCode,data);
    
        returned_string_to_add=data.getStringExtra("String");
    
    }
    else if (resultCode == Activity.RESULT_CANCELED) {
        returned_string_to_add=null;
   }
}
电路板的类型为先前初始化的
String[][

在活动1中的创建中的
onCreate

String returned_string_to_add;

protected void onCreate(Bundle savedInstanceState) {
    [....]
    int[] thrown= throwCoin(cols,rows); //create int[2] with random numbers

    [....]
    if (board[thrown[0]][thrown[1]]==null){
        board[thrown[0]][thrown[1]]=addTask();
        Log.wtf( "check_board",  board[thrown[0]][thrown[1]]);
        Log.wtf( "intent",  returned_string_to_add);
    }
private String addTask() {
    returned_string_to_add=null;
    Intent intent=new Intent(this,PopupQuestion.class);
    startActivityForResult(intent,1);

    //I expect to get results here.
    return returned_string_to_add;
}
    
    
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == 1)&&(resultCode == Activity.RESULT_OK)){
                    super.onActivityResult(requestCode,resultCode,data);
    
        returned_string_to_add=data.getStringExtra("String");
    
    }
    else if (resultCode == Activity.RESULT_CANCELED) {
        returned_string_to_add=null;
   }
}
弹出问题:

[...]
onCreate
[...]
Intent intent =new Intent();
intent.putExtra("String",edittext.getText().toString()); //works fine
                    setResult(Activity.RESULT_OK,intent);
finish();

我想在函数
addTask()
中覆盖返回的\u字符串\u to \u add,但这会在以后发生。如何解决这个问题?

“我希望在这里得到结果。”-这不会发生。你需要使用onActivityResult的
回调来获得结果。你知道如何让它正常工作吗?
data.getStringExtra(“String”)
-你验证过它被调用并且包含正确的值了吗?“但当它完成时,应用程序不会立即调用onActivityResult()。-确实如此。“我需要覆盖返回的\u字符串\u以添加我调用startActivityForResult(intent,1)的确切位置”-您无法在那里获取它。您需要重新构造代码,以便在activityresult()上执行需要对结果执行的任何操作。无法从
addTask()
返回预期值。这取决于当前尝试使用
addTask()
返回的内容。基本上,您需要更改
stringwhere=addTask()
下一个代码…
只是
addTask(),以及
下一个代码…
将从activityresult()上的
执行。