我是Android,Eclipse和Java的新手(十年前我读过一本Java书而从未使用它。)我正在学习本教程:http://ofps.oreilly.com/titles/9781449390501/Android_User_Interface.html
我有这段代码:
public class Status extends Activity implements OnClickListener, TextWatcher {
// ...
class PostToTwitter extends AsyncTask<String, Integer, String> {
// ...
protected void onPostExecute(String result) {
Toast.makeText(Status.this, result, Toast.LENGTH_LONG).show();
}
}
}
我在 Toast.makeText 行旁边收到这些错误:
- Toast类型中的方法makeText(Context,CharSequence,int)不适用于参数(AsyncTask.Status,String,int)
- 在范围
中无法访问AsyncTask.Status类型的封闭实例
我想我要打自己并说Doh!后来,但我现在已经对自己视而不见了:)
答案 0 :(得分:2)
您的问题是Status
是公开的enum of AsyncTask。因此,java不会将您的活动视为上下文。尝试在AsyncTask
。
请在此处试用此代码:
public class Status extends Activity implements OnClickListener, TextWatcher {
private Context context;
public void onCreate(...) {
context=this;
//...
}
// ...
class PostToTwitter extends AsyncTask<String, Integer, String> {
// ...
protected void onPostExecute(String result) {
Toast.makeText(context, result, Toast.LENGTH_LONG).show();
}
}
}
答案 1 :(得分:2)
Toast.makeText(com.package.name.Status.this, "Toast message", Toast.LENGTH_LONG).show();
将com.package.name
替换为您的应用程序的包名称。
答案 2 :(得分:1)
尝试将上下文传递给AsyncTask,包括它在&#34; PostToTwitter&#34;构造函数。例如,当您实例化类时,传递getApplicationContext()(或#34;此&#34;,如果从Activity调用)。然后,在Toast中使用该上下文,而不是Status.this:
Toast.makeText(context, result, Toast.LENGTH_LONG).show();
答案 3 :(得分:0)
toast在onPostExecute()方法中获取错误使用ProgressDialoge或通过
进行调试Log.d( “结果”,结果+ “”);
答案 4 :(得分:0)
你的asyntask是否是Status Activity中的内部类,然后使用public关键字作为
public class PostToTwitter extends AsyncTask<String, Integer, String> {
// ...
public void onPostExecute(String result) {
Toast.makeText(Status.this, result, Toast.LENGTH_LONG).show();
}
}
Status.this没问题,如果你的Asyntask不是内部类,那么你需要在构造函数中传递它