小编And*_*los的帖子

如何通过 onSaveInstanceState 保存和检索图像的 URI?

我正在尝试改变方向。目前,当我旋转手机时,我的片段中的图像消失了。这显然是因为活动被销毁并重新创建。我没有尝试保存像图像这样的大数据,而是决定通过UrionSaveInstanceState方法中保存图像来解决这个问题:

@Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable("imageUri", imageUri);
    }
Run Code Online (Sandbox Code Playgroud)

在我的片段中onCreateView,我尝试检索 Uri 并将其粘贴回ImageView,同时牢记空的可能性。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_top_image, container, false);

        imageView = view.findViewById(R.id.meme_image_view);

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectedImage(v);
            }
        });

        topTextView = view.findViewById(R.id.top_text_view);
        bottomTextView = view.findViewById(R.id.bottom_text_view);

        if(savedInstanceState != null){
            if(imageUri != null){
                Uri savedUri = savedInstanceState.getParcelable("imageUri");
                imageView.setImageURI(savedUri);
            }
        }

        return view;
    }
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它不起作用。当我旋转手机时,图像仍然丢失。

完整片段:

public class …
Run Code Online (Sandbox Code Playgroud)

java android uri android-bitmap

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

如何通过另一个fragment中的onClick调用一个fragment中的方法?

我正在构建一个包含 2 个片段的应用程序。第一个片段有一个 ImageView 和 2 个 TextView,第二个片段有一组按钮和 EditText。在第二个片段中,我有一个名为“保存”的按钮。单击此按钮时,我想将第一个片段中的图像下载到我的设备文件夹中(ImageView、URI、位图和画布对象都在第一个片段中)。

由于片段无法直接相互通信,因此我正在考虑使用接口来实现这一点。我所做的是:

  • 我已经在第二个片段中声明了我的接口
  • 在 MainActivity 中应用接口方法的逻辑(这是两个片段之间的共享活动)
  • 在第一个片段中提供该方法的必要参数。
  • 没用

但我认为这不是正确的顺序,所以它不起作用也就不足为奇了。如何应用界面,以便单击第二个片段中的按钮下载第一个片段中的图像?

java android interface android-fragments

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

从 Google Play 下载时应用程序崩溃

我刚刚构建了一个应用程序并将其部署到 Google Play。当我通过 Android Studio 运行它时它运行良好,但现在当我从 Google Play 下载它时它崩溃了。因为这是我第一次,我什至不知道如何查看从 Google Play 下载的应用程序的崩溃报告/堆栈跟踪。我感谢任何和所有的帮助。

更新

所以我得到了 APK 的堆栈跟踪。它告诉我我的TopImageFragment.java班级无法创建我的MemeViewModel.java班级。我不知道为什么会出现这个错误。一切都按原样运行良好。看来 proguard 确实正在逐步淘汰一个重要的类:

2019-04-18 00:46:32.062 8099-8099/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.ozbek.onur.memegenerator, PID: 8099
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ozbek.onur.memegenerator/com.ozbek.onur.memegenerator.MainActivity}: java.lang.RuntimeException: Cannot create an instance of class com.ozbek.onur.memegenerator.MemeViewModel
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2853)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2928)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1609)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6703)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
     Caused by: java.lang.RuntimeException: Cannot create an instance of class com.ozbek.onur.memegenerator.MemeViewModel
        at …
Run Code Online (Sandbox Code Playgroud)

android stack-trace google-play

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