gpt4 book ai didi

java - 从 onpostexecute 发送值

转载 作者:行者123 更新时间:2023-11-29 04:19:01 24 4
gpt4 key购买 nike

我正在使用 AsyncTask 执行后台任务,完成我的任务后,我想将 onPostExecute 方法的结果字符串设置为另一个 Activity 的构造函数,然后我想从那里将​​该字符串设置为 TextView。当我在构造函数中打印日志时,它正在打印字符串,但是当我在 textview 上设置相同的字符串时,它给出空字符串。(在 textview 上设置的字符串是空的,所以它什么都不打印。)

我的异步任务代码:

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.d("Answer1",s);
new Answer(s);
}

我的回答 Activity ,我在其中通过构造函数设置字符串并在 textview 上设置该字符串的值,但该字符串为空。

public class Answer extends AppCompatActivity {

TextView textView;

String str;

// Dont Delete this
Answer(){

}

// Here, Log will print right string, but not on textview
Answer(String str){
this.str = str;
Log.d("Answer2",this.str);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_answer);

textView = findViewById(R.id.SetSteps);

// The String set here is empty, can you please elaborate???
textView.setText(str);
}

}

最佳答案

您应该永远不要自己实例化一个 Activity 。正确的方法是通过 Intent 将所需数据传递给新 Activity :

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Intent intent = new Intent(CurrentActivity.this, Answer.class);
intent.putExtra("MY_DATA", s);
startActivity(intent);
}

然后在您的 Answer Activity 中您可以收到值:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_answer);

textView = findViewById(R.id.SetSteps);
String result = getIntent().getExtras().getString("MY_DATA","");

textView.setText(result);
}

关于java - 从 onpostexecute 发送值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50416847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com