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();