1

我是 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 类型的封闭实例
  1. 我不确定为什么会出现错误?
  2. 为什么在我传递 Status 活动上下文时提到 AsyncTask?

我想我会打自己一巴掌说“Doh”!后来,但我现在对它视而不见:)

4

5 回答 5

2

您的问题是这是AsyncTaskStatus的公共枚举。因此,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();
    }
  }
}
于 2013-01-24T11:50:45.557 回答
2
Toast.makeText(com.package.name.Status.this, "Toast message", Toast.LENGTH_LONG).show();

替换com.package.name为您的应用程序的包名称。

于 2013-01-24T12:48:54.780 回答
1

尝试将上下文传递给 AsyncTask,包括在“PostToTwitter”构造函数中。例如,当您实例化类时,传递 getApplicationContext() (或“this”,如果从 Activity 调用)。然后,在 Toast 中使用该上下文,而不是 Status.this:

      Toast.makeText(context, result, Toast.LENGTH_LONG).show();
于 2013-01-24T12:14:06.467 回答
0

Toast 在 onPostExecute() 方法使用 ProgressDialoge 或调试时出现错误

Log.d("结果",结果+"");

于 2013-01-24T11:52:04.180 回答
0

您的 asyntask 是否是 Status Activity 中的内部类,如果然后将 public 关键字与 as

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 不是内部类,那么您需要将它作为 Constructor 传递

于 2013-01-24T12:07:20.983 回答