Android onPostExecute()中的finish()命令

Android onPostExecute()中的finish()命令,android,android-asynctask,Android,Android Asynctask,我的主要活动课。接受代码并在异步任务中签入代码的对话框 public class StatusPage extends ActionBarActivity { ... Context con = this; onCreate{ ... DialogBox = new Dialog(v.getContext()); DialogBox.setContentView(R.layout.dialog_content); DialogBox.s

我的主要活动课。接受代码并在异步任务中签入代码的对话框

public class StatusPage extends ActionBarActivity {
...
   Context con = this;
   onCreate{
      ...
      DialogBox = new Dialog(v.getContext());
      DialogBox.setContentView(R.layout.dialog_content);
      DialogBox.show();
      Button btnOk= (Button) DialogBox 
                    .findViewById(R.id.button1);
      btnOk.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
            EditText text = (EditText) DialogBox 
                            .findViewById(R.id.editText1);
            String code = text.getText().toString();
            GetStatus gsobj = new GetStatus();
            gsobj.connect(code, con);
         }
       });
     }
   }
我的异步任务类:

public class GetStatus{
...
   protected void connect(String code, Context con)
        throws InterruptedException, ExecutionException {
            new GetStatusTask(code, con)
                .execute("http://10.0.2.2:8080/connect_gs.php?code="
                    + code);
         }

   private class GetStatusTask extends AsyncTask<String, Void, String> {
      Context con;
      String code;

      public GetStatusTask(String code, Context con) {
         this.con = con;
         this code = code;
      }
      protected String doInBackground(String... urls) {
           //work in stealth mode
      }
      protected void onPostExecute(String result) {
         ...
         if(status == okay){
             //goto a new activity
             //finish the StatusPage activity so that it does not remain in stack
            Intent i = new Intent(con, HomePage.class);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            con.startActivity(i);
            ((Activity) con).finish();
         }
      }
   }
}
日志:


我发现错误在于将上下文转换为活动。如何修复它?

我认为您的问题是您正在强制转换到公共活动类,而不是您的StatusPage的活动,请尝试强制转换((StatusPage)con).finish();或者使用StatusPage.this.finish()

改变这一点:

((Activity) con).finish();


我想这似乎管用。但是在HomePage.java的“ScrollView sv=new ScrollView(this)”行中出现错误。我打赌现在的问题是使用“this”。我们必须弄清楚是什么。感谢您的帮助:)使用
主页代替
。此
使用活动上下文代替
。你在哪个
Activity
中调用这个?我正在
code
主页
code
活动中创建一个动态滚动视图。使用
code
ScrollView sv=新的ScrollView(HomePage.this)
code
或者干脆
code
这个
code
code
onCreate()
code
中出现了一个错误。希望我也能接受你的答案。离您只有2分钟的路程:P和((LoginPage)con).finish()在Eclipse.initialize con=this中给出“在作用域中无法访问LoginPage类型的封闭实例”错误消息;内部onCreate方法
FATAL EXCEPTION: main
Process: com.example.desigobuild2, PID: 3451
java.lang.ClassCastException: android.app.ContextImpl cannot be cast to android.app.Activity
at com.example.desigobuild2.GetUser$GetUserTask.onPostExecute(GetStatus.java:165)
at com.example.desigobuild2.GetUser$GetUserTask.onPostExecute(GetStatus.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
((Activity) con).finish();
((StatusPage ) con).finish();