gpt4 book ai didi

java - 在来自不同 Java 类文件的 Activity 中 toast

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:01 28 4
gpt4 key购买 nike

我有 2 个 .java 文件:AnswerActivity.java

public class AnswerActivity extends AppCompatActivity {

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

new JSONTask().execute("https://example.com/api.php");
}
}

JSONTask.java

public class JSONTask extends AsyncTask<String, String, String> {

@Override
protected String doInBackground(String... params) {

//--- some code cut here ---//

}

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);

Intent i = new Intent(this, AnswerActivity.class);
Toast.makeText(i, result, Toast.LENGTH_LONG).show();
}
}

我的最后两行总是给我错误:

    Intent i = new Intent(this, AnswerActivity.class);
Toast.makeText(i, result, Toast.LENGTH_LONG).show();

我想将 result 作为 Toast 显示到 AnswerActivity 中。但为什么我总是收到此错误消息?

Error:(68, 20) error: no suitable constructor found for Intent(JSONTask,Class<AnswerActivity>)
constructor Intent.Intent(String,Uri) is not applicable
(argument mismatch; JSONTask cannot be converted to String)
constructor Intent.Intent(Context,Class<?>) is not applicable
(argument mismatch; JSONTask cannot be converted to Context)

Error:(69, 14) error: no suitable method found for makeText(Intent,String,int)
method Toast.makeText(Context,CharSequence,int) is not applicable
(argument mismatch; Intent cannot be converted to Context)
method Toast.makeText(Context,int,int) is not applicable
(argument mismatch; Intent cannot be converted to Context)

我在这里错过了什么?谢谢

最佳答案

您需要上下文来显示 Toast。通常是 ActivityFragment 具有上下文。但是由于您的 AsyncTask 不是您的 AnswerActivity 的内部类,因此您没有对上下文的引用。所以你可以在构造函数中传递 Activity 并使用它

public class JSONTask extends AsyncTask<String, String, String> {

private Context context;

public JSONTask(Context context){
this.context = context;
}

@Override
protected void onPostExecute(String result) {
Toast.makeText(context, result, Toast.LENGTH_LONG).show();
}
}

并与它一起使用

new JSONTask(this)... // and so on

这样做的最大优点是,您无需保留对 Activity 的引用,只需传递 Context - 因为 Activity 确实扩展了 Context。

关于java - 在来自不同 Java 类文件的 Activity 中 toast ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877180/

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