请分享如何在doinbackground()或onpostexecute()方法中使用intent Asynctask类。当我尝试使用这些代码时,它会显示错误。
Intent intent = new Intent(asynctask.this, home.class);
startActivity(intent);
finish();
private Class<Home> clazz;
public asynctask(Class<Home> clazz){
this.clazz = clazz;
}
Asynctask doInBackground()方法:
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(this, clazz);
startActivity(intent);
finish();
Toast.makeText(cxt, "welcome", Toast.LENGTH_SHORT).show();
return null;
}
答案 0 :(得分:9)
试试这种方式,希望这可以帮助您解决问题。
如何asynctask类:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyCustomAsyncTask(this).execute();
}
<强> MyCustomAsyncTask.java 强>
public class MyCustomAsyncTask extends AsyncTask<Void,Void,Void> {
private Context context;
public MyCustomAsyncTask(Context context){
this.context=context;
}
@Override
protected void onPreExecute() {
// write show progress Dialog code here
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
// write service code here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Toast.makeText(context, "welcome", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, home.class);
context.startActivity(intent);
((Activity)context).finish();
}
}
答案 1 :(得分:5)
将此意图部分移至onPostExecute(...)
<{1}}方法
答案 2 :(得分:0)
doInBackground(Void... arg0)
应该只执行后台任务
你应该在onPostExecute(...)
方法中加入其他代码。这样当后台任务结束时,移动到其他活动。
**请勿尝试触摸doInBackground(....)
您的应用可能会崩溃的用户界面。
答案 3 :(得分:0)
您无法与doInBackground(....)
中的用户界面进行互动。您只能与onPostExecute(...)
中的用户界面进行互动。就像线程一样,你无法在Thread for UI中与UI进行交互,我们使用Handler。
答案 4 :(得分:0)
始终将意图放在onPostExecute
中。这将确保您的UI线程同步。
例如,如果您希望在收到正确的凭据时显示该用户应转移到下一个活动,否则应显示“无效凭据”消息,以防它们出错。您的onPostExecute
应如下所示:
protected void onPostExecute(final Boolean success) {
if(success){
Intent intent = new Intent(<CurrentActivity>.this, <NextActivity>.class);
startActivity(intent);
}
else{
Toast.makeText(LoginActivity.this, "Invalid Credentials", Toast.LENGTH_SHORT).show();
}
}