如何将Async类的结果放到mainActivity EditText中

时间:2014-09-03 06:13:27

标签: java android

我如何访问

 protected void onPostExecute(String result) {
        //result
    }
来自mainActivity的

? 我想将EditText设置为结果

final MainActivity mContext=new MainActivity();
EditText showresult=(EditText)mContext.findViewById(R.id.xx);

以上代码未显示mainActivity的控件。

更新代码

 protected void onPostExecute(String result) {
        EditText ed=(EditText)findViewById(R.id.displayQue);
        ed.setText(result);

    }

09-03 15:31:19.882: D/AndroidRuntime(17146): Shutting down VM
09-03 15:31:19.882: W/dalvikvm(17146): threadid=1: thread exiting with uncaught exception (group=0x40d45930)
09-03 15:31:19.992: E/AndroidRuntime(17146): FATAL EXCEPTION: main
09-03 15:31:19.992: E/AndroidRuntime(17146): java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText
09-03 15:31:19.992: E/AndroidRuntime(17146):    at com.example.digiqueue.MainActivity$ftpfunctions.onPostExecute(MainActivity.java:106)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at com.example.digiqueue.MainActivity$ftpfunctions.onPostExecute(MainActivity.java:1)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at android.os.AsyncTask.finish(AsyncTask.java:631)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at android.os.Looper.loop(Looper.java:176)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at android.app.ActivityThread.main(ActivityThread.java:5365)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at java.lang.reflect.Method.invokeNative(Native Method)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at java.lang.reflect.Method.invoke(Method.java:511)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
09-03 15:31:19.992: E/AndroidRuntime(17146):    at dalvik.system.NativeStart.main(Native Method)

3 个答案:

答案 0 :(得分:0)

步骤可能如下:

  1. 使用方法interface
  2. 创建onResult(String result) ResultListener
  3. 让MainActivity实现该接口
  4. 将MainActivity作为AsyncTask
  5. 的一个参数传递
  6. 将ResultListener另存为AsyncTask
  7. 的成员
  8. onResult中为ResultListener成员
  9. 触发onPostExecute
  10. onResult
  11. EditText中显示结果

答案 1 :(得分:0)

您可以使用适配器来完成此操作。

public View getView(int position, View convertView, ViewGroup parent)方法调用您的异步方法。

答案 2 :(得分:0)

阅读stacktrace

E/AndroidRuntime(17146): java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText

您在布局xml中似乎有一个TextView,但在您的代码中尝试将其用作EditText。这是行不通的。您必须更改xml以使用EditText或您的代码才能使用TextView

我假设您只想显示结果,因此您应该使用TextViewEditText是一个文本输入框,用户可以在其中键入文本)

你的代码应该是这样的

protected void onPostExecute(String result) {
    TextView tv=(TextView)findViewById(R.id.displayQue);
    tv.setText(result);
}
祝你好运。 :)