android中AsyncTask的启动活动问题
我在Android应用程序中的android中AsyncTask的启动活动问题,android,layout,android-activity,android-asynctask,Android,Layout,Android Activity,Android Asynctask,我在Android应用程序中的AsyncTask中面临一个问题。问题是,我正在我的应用程序中从异步任务启动另一个活动,当它的布局有简单的按钮时运行良好,但当我使用图像按钮时,它会给我处理程序和looper.loop的错误。我不明白发生这种错误的原因。我正在调用活动中显示带有图像的菜单 有人能告诉我这有什么问题吗?我怎样才能实现这种功能 protected void onPostExecute(Void result) { super.onPostExecute(result);
AsyncTask
中面临一个问题。问题是,我正在我的应用程序中从异步任务
启动另一个活动
,当它的布局有简单的按钮
时运行良好,但当我使用图像按钮
时,它会给我处理程序和looper.loop的错误。我不明白发生这种错误的原因。我正在调用活动
中显示带有图像的菜单
有人能告诉我这有什么问题吗?我怎样才能实现这种功能
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (Dialog != null && Dialog.isShowing()) {
Dialog.dismiss();
locationManager.removeUpdates(locationListener);
Intent homeIntent = new Intent(ATMActivity.this.getApplicationContext(), HomeMenuActivity.class);
homeIntent.putExtra("lat", latitude);
homeIntent.putExtra("lng", longitude);
startActivity(homeIntent);
}
}
XML文件:-
我认为您正在使用非UI线程的UI线程(更新UI线程),这是导致问题的原因。如果要从非UI线程更新任何内容,需要将代码放入
runOnUiThread()
中
如果没有完整的堆栈跟踪,很难确定,但我最好的猜测是您实际上得到了一个
ClassCastException
您的ATMActivity
正在尝试将imageButton1
(在xml中定义为ImageButton
)转换为按钮。这是不可能的,因为后者不是前者的超类
// Can't do below: Button is not a superclass of ImageButton
Button btn = (Button) findViewById(R.id.imageButton1);
由于您是从AsyncTask的onPostExecute启动活动,您可能会在堆栈跟踪中发现一些提到循环器/处理程序的内容。请提供一些代码以了解详细信息。请发布生成Exceptionprotected void onPostExecute(void result){super.onPostExecute(result);如果(Dialog!=null&&Dialog.isShowing()){Dialog.discouse();locationManager.removeUpdates(locationListener);Intent homeIntent=new Intent(AtMacActivity.this.getApplicationContext(),HomeMenuActivity.class);homeIntent.putExtra(“lat”,纬度);homeIntent.putExtra(“lng”,经度);startActivity(homeIntent);}按钮btn=(按钮)findViewById(R.id.imageButton1);btn.setHint(“ATM”);float lation=getIntent().getflootextra(“lat”,0);float longitude=getIntent().getflootextra(“lng”,0);Toast.makeText(getApplicationContext(),“Location Floats:-”+纬度+,“+经度,Toast.LENGTH_LONG)。show();你好,lalit,我没有收到你的建议,但我只是从onPostExecute调用activity,在xml布局中,我只有一个图像按钮。如果我只是用按钮替换图像,那么一切都运行得非常好。你必须在问题本身中包含代码,正如你所添加的,它在注释中无法读取.lalit谢谢您的快速回复。我发布了示例代码。请检查一次。。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
Button btn = (Button) findViewById(R.id.imageButton1);
btn.setHint("ATM");
float latitude = getIntent().getFloatExtra("lat", 0);
float longitude = getIntent().getFloatExtra("lng", 0);
Toast.makeText(getApplicationContext(), "Location Floats:- " + latitude + "," + longitude, Toast.LENGTH_LONG).show();
}
Activity_name.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// here you can add stuff to Update the UI.
}
});
// Can't do below: Button is not a superclass of ImageButton
Button btn = (Button) findViewById(R.id.imageButton1);