Android Studio - Painview / Canvas Я хочу сохранить свою краску в настройках Shared, чтобы не терять прогресс при закрытии приложения, но получаю ошибку - PullRequest
0 голосов
/ 07 февраля 2020

Вот ошибка LogCat:

2020-02-07 21: 00: 14.899 14545-14552 /? E / m.example.pain: Не удалось отправить ответ jdwp-handshake .: Broken pipe 2020-02-07 21: 00: 15.888 14545-14545 /? E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной Процесс: com.example.paint, PID: 14545 java .lang.RuntimeException: невозможно запустить действие ComponentInfo {com.example.paint / com.example.paint.MainActivity}: java .lang.IllegalStateException в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2913) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3048) в android .app. servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 108) в android .app.servertransaction.TransactionExecutor.execute (Exutor. java: 68) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1808) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 193) в android .app.ActivityThread.main (ActivityThread. java: 6669) в java .lang.reflect.Method.invoke ( Собственный метод) на com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 858). Причина: java .lang.IllegalStateException в android. graphics.Canvas.setBitmap (Canvas. java: 188) в com.example.paint.MainActivity.loadSharedPref (MainActivity. java: 189) в com.example.paint.MainActivity.onCreate (MainActivity. java: 69) в android .app.Activity.performCreate (Activity. java: 7136) в android .app.Activity.performCreate (Activity. java: 7127) в android .app.Instrumentation.callActivityOnCreate (Инструментарий. java: 1271) в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2893) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3048) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 108) в android .app.servertransaction.TransactionExecutor. выполнить (TransactionExecutor. java: 68) в android. app.ActivityThread $ H.handleMessage (ActivityThread. java: 1808) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper . java: 193) на android .app.ActivityThread.main (ActivityThread. java: 6669) на java .lang.reflect.Method.invoke (собственный метод) на com. android .internal .os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 858)

код, который я написал, похоже, работает над сохранением в общих настройках, но при попытке загрузить приложение вылетает, вот код загрузки из общих настроек!

public void loadSharedPref() {
    Log.d("test1","heree");
     SharedPreferences preferences = this.getSharedPreferences("myprefs",MODE_PRIVATE);
    //SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
    // If value for key not exist then return second param value - In this case "..."
    String img_str=preferences.getString("userphoto", "");
    Log.d("test",img_str);
    if (!img_str.equals("")){
        //decode string to image
        String base=img_str;
        byte[] imageAsBytes = Base64.decode(base.getBytes(), Base64.DEFAULT);
        PaintView.mCanvas.setBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));

    }
}
...