相关疑难解决方法(0)

无法在未调用Looper.prepare()的线程内创建处理程序

以下例外意味着什么; 我该怎么解决?

这是代码:

Toast toast = Toast.makeText(mContext, "Something", Toast.LENGTH_SHORT);
Run Code Online (Sandbox Code Playgroud)

这是例外:

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
     at android.os.Handler.<init>(Handler.java:121)
     at android.widget.Toast.<init>(Toast.java:68)
     at android.widget.Toast.makeText(Toast.java:231)
Run Code Online (Sandbox Code Playgroud)

android ui-thread android-toast

919
推荐指数
17
解决办法
72万
查看次数

AsyncTask和Looper.prepare()错误

我有以下代码

class OverlayTask extends AsyncTask<Void, Void, Void> {
    @Override
    public void onPreExecute() {

        if (sites != null) {
            myMapView.getOverlays().remove(sites);
            myMapView.invalidate();
            sites = null;
        }
    }

    @Override
    public Void doInBackground(Void... unused) {
            grabShipsWithLocation();
            return (null);
    }

    @Override
    public void onPostExecute(Void unused) {
        myMapView.getOverlays().add(sites);
        myMapView.invalidate();
        isLoading = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎在一些测试设备上工作正常,但我发现在开发控制台上出现了很多错误.我似乎无法弄清楚为什么以及在哪里放置这个Looper.prepare().需要它吗?

java.lang.ExceptionInInitializerError
at com.test.appname.FinderMain$1.gotLocation(FinderMain.java:286)
at com.test.appname.MyLocation$GetLastLocation.run(MyLocation.java:89)
at java.util.Timer$TimerImpl.run(Timer.java:289)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
at android.os.AsyncTask.<clinit>(AsyncTask.java:152)
Run Code Online (Sandbox Code Playgroud)

按要求MyLocation.java

    class GetLastLocation …
Run Code Online (Sandbox Code Playgroud)

android looper android-asynctask

31
推荐指数
2
解决办法
5万
查看次数

asynctask中的CursorLoader,无法在未调用Looper.prepare的线程内创建处理程序

在我的应用程序中,我打电话给相机应用程序拍照.在我的活动结果中,我启动了一个asynctask来处理照片.(旋转并上传照片).

我还想从图库中删除照片.为此,我在asynctask中执行以下代码.

// Delete image from gallery
        String[] imageColumns = { MediaStore.Images.Media._ID };
        String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
        String imageWhere = MediaStore.Images.Media._ID + ">?";
        String[] imageArguments = { Integer.toString(captureLastID) };

        CursorLoader imageLoader = new CursorLoader(mActivity);

        imageLoader.setUri(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        imageLoader.setProjection(imageColumns);
        imageLoader.setSelection(imageWhere);
        imageLoader.setSelectionArgs(imageArguments);
        imageLoader.setSortOrder(imageOrderBy);

        Cursor imageCursor = imageLoader.loadInBackground();

        if (imageCursor.getCount() > 0) {
            while (imageCursor.moveToNext()) {
                int id = imageCursor.getInt(imageCursor
                        .getColumnIndex(MediaStore.Images.Media._ID));

                ContentResolver cr = mActivity.getContentResolver();
                cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        MediaStore.Images.Media._ID + "=?",
                        new String[] { Long.toString(id) });
                break;
            }
        }

        imageCursor.close();
Run Code Online (Sandbox Code Playgroud)

我收到了错误

无法在未调用Looper.prepare的线程内创建处理程序

是什么导致此错误,我该如何解决?它是否与我调用loadInBackground这一事实有关,而asynctask已经在后台运行了?

这是我的logcat: …

android android-asynctask

4
推荐指数
1
解决办法
3714
查看次数

如何解决FATAL EXCEPTION:Thread-11

现在我正在开发一个使用异步任务Iam面对这个错误,任何人都有这个想法..

10-03 19:04:55.662: E/AndroidRuntime(1547): FATAL EXCEPTION: Thread-11
10-03 19:04:55.662: E/AndroidRuntime(1547): java.lang.ExceptionInInitializerError
10-03 19:04:55.662: E/AndroidRuntime(1547):     at com.cc.accounts.ChatAccountsFragment.Gtalk_logInComplete(ChatAccountsFragment.java:579)
10-03 19:04:55.662: E/AndroidRuntime(1547):     at com.cc.xmpp.GmailXmppClient.Login(GmailXmppClient.java:92)
10-03 19:04:55.662: E/AndroidRuntime(1547):     at com.cc.accounts.ChatAccountsFragment$5.run(ChatAccountsFragment.java:482)
10-03 19:04:55.662: E/AndroidRuntime(1547):     at java.lang.Thread.run(Thread.java:1096)
10-03 19:04:55.662: E/AndroidRuntime(1547): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
10-03 19:04:55.662: E/AndroidRuntime(1547):     at android.os.Handler.<init>(Handler.java:121)
10-03 19:04:55.662: E/AndroidRuntime(1547):     at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
10-03 19:04:55.662: E/AndroidRuntime(1547):     at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
10-03 19:04:55.662: E/AndroidRuntime(1547):     at android.os.AsyncTask.<clinit>(AsyncTask.java:152)
10-03 19:04:55.662: E/AndroidRuntime(1547):     ... 4 more
Run Code Online (Sandbox Code Playgroud)

这是异步任务

public void Gtalk_logInComplete(String Uname, XMPPConnection _connection) …
Run Code Online (Sandbox Code Playgroud)

multithreading android fatal-error

2
推荐指数
1
解决办法
2万
查看次数