android,异步任务类中的Toast如何获得Context?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android,异步任务类中的Toast如何获得Context?相关的知识,希望对你有一定的参考价值。
MainActivity.java
new Async().execute()
Async.java
Toast.makeText(这里怎么取得上下文对象让其在MainActivity中显示出来,"内容",1).show();
AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法。注意继承时需要
设定三个泛型Params,Progress和Result的类型,如AsyncTask<Void,Inetger,Void>:
Params是指调用execute()方法时传入的参数类型和doInBackgound()的参数类型
Progress是指更新进度时传递的参数类型,即publishProgress()和onProgressUpdate()的参数类型
Result是指doInBackground()的返回值类型
上面的说明涉及到几个方法:
1.doInBackgound() 这个方法是继承AsyncTask必须要实现的,运行于后台,耗时的操作可以在这里做
2.publishProgress() 更新进度,给onProgressUpdate()传递进度参数
3.onProgressUpdate() 在publishProgress()调用完被调用,更新进度 参考技术B getActivity();追问
不行啊。
Async.java
protected void onPostExecute(String result)
…………
Toast.makeText(getActivity(), result, 1).show();
那就用handle 发
参考技术C 这里直接传入MainActivity.class试试看。追问不行,
The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (Class, String, int)
getApplicationContext()试试看。
追问不行的
本回答被提问者采纳 参考技术D 同样的问题。。题主解决了吗在要在后台(异步)任务类(Java/Android)中访问的类方法中设置变量
【中文标题】在要在后台(异步)任务类(Java/Android)中访问的类方法中设置变量【英文标题】:Set a variable in a class method to be accessed in a background (async) task class (Java/Android) 【发布时间】:2017-04-16 13:57:53 【问题描述】:我正在尝试设置一个变量 'election_id' 从上一课获得额外的意图。我需要使用 id 将其解析为 PHP URL 以检索一些 JSON。我想要做的是将一个变量设置为与前一个类中分配的选举 ID 相同,以便在后台任务中使用:
public class AdminFinishCandidateActivity extends AppCompatActivity
String json_string;
String json_string_result;
String election_id;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin_finish_candidate);
System.out.println("creating");
Bundle electionData = getIntent().getExtras();
if (electionData==null)
return;
election_id = electionData.getString("electionId");
public void getJson(View view)
new BackgroundTask().execute();
class BackgroundTask extends AsyncTask<Void,Void,String>
String json_url="http://192.168.56.1/dan/db/getjson.php?election_id=" + election_id;
// code to retrieve JSON
目前,在我的 onCreate 方法中分配了election_id,但是我知道我无法从我定义 String json_url 的 BackgroundTask 类中的此方法访问它。我该如何做才能在这个类中调用election_id 变量?检索意图附加内容的方法在此类中不起作用。当我使用 JSON 代码运行代码时,没有检索到任何内容。谢谢。
【问题讨论】:
【参考方案1】:您可以将字符串传递给 AsyncTask,如下所示:
public class BackgroundTask extends AsyncTask<String,Void,String>
@Override
protected String doInBackground(String... params)
String json_url="http://192.168.56.1/dan/db/getjson.php?election_id=" + params[0];
//perform network operation and return response
return response;
@Override
protected void onPostExecute(String res)
//Batman Rocks
现在执行如下任务:
new BackgroundTask().execute(election_id);
【讨论】:
以上是关于android,异步任务类中的Toast如何获得Context?的主要内容,如果未能解决你的问题,请参考以下文章
Fragment 如何从使用 http 和异步任务获取数据的 MainActivity 类中获取数据?
在要在后台(异步)任务类(Java/Android)中访问的类方法中设置变量