Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中AsyncTask的启动活动问题_Android_Layout_Android Activity_Android Asynctask - Fatal编程技术网

android中AsyncTask的启动活动问题

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

我在Android应用程序中的
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);