首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >startActivityForResult破片

startActivityForResult破片
EN

Stack Overflow用户
提问于 2018-09-05 08:03:39
回答 4查看 522关注 0票数 0

startActvityResult()调用时发生错误。

我用它从其他片段调用FragmentFotosdePerfil

代码语言:javascript
复制
public void verFotosPerfil(String userID){

    fragmentFotosPerfil=new FragmentFotosPerfil();
    Bundle bundle= new Bundle();
    bundle.putString("userID",userID);
    fragmentFotosPerfil.setArguments(bundle);
    getFragmentManager().beginTransaction().
    replace(R.id.frameLayout2,fragmentFotosPerfil).commit();

}

我从XML中调用"cargarFotoPerfil“,并在不同的按钮中单击

代码语言:javascript
复制
 public void cargarFotoPerfil(View view){


    switch(view.getId()) {
        case R.id.btnCargarFoto2:
            System.out.println("caso2");
          cargarFotoPerfil2(view);
            foto=2;
            break;
        case R.id.btnCargarFoto3:
            cargarFotoPerfil2(view);
            foto=3;
            break;
        case R.id.btnCargarFoto4:
            cargarFotoPerfil2(view);
            foto=4;
            break;

        case R.id.btnCargarFoto5:
            cargarFotoPerfil2(view);
            foto=5;
            break;

    }

    public void cargarFotoPerfil2(View view){

        final CharSequence[] opciones={"Elegir de Galeria","Cancelar"};
        final AlertDialog.Builder builder=new 
        AlertDialog.Builder(view.getContext());
        builder.setTitle("Elige una Opción");
        builder.setItems(opciones, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                if (opciones[i].equals("Elegir de Galeria")){
                    Intent intent=new Intent(Intent.ACTION_PICK,
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    intent.setType("image/");  
                    startActivityForResult
                    (intent.createChooser(intent,"Seleccione"),10);
                }else{
                    dialogInterface.dismiss();
                }
            }

        });
        builder.show();
    }

这是我的日志报告,如下所示。

//ERROR.CRASHES行startActivityForResult()

代码语言:javascript
复制
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.clemente.prueba6, PID: 4937
                  java.lang.IllegalStateException: Fragment FragmentFotosPerfil{18cbf6df} not attached to Activity
                      at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:1019)
                      at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:1010)
                      at com.example.clemente.prueba6.FragmentFotosPerfil$1.onClick(FragmentFotosPerfil.java:159)
                      at android.support.v7.app.AlertController$AlertParams$3.onItemClick(AlertController.java:1067)
                      at android.widget.AdapterView.performItemClick(AdapterView.java:300)
                      at android.widget.AbsListView.performItemClick(AbsListView.java:1143)
                      at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044)
                      at android.widget.AbsListView$3.run(AbsListView.java:3833)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5221)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

有人知道这个问题的解决方案吗?

预先感谢

EN

回答 4

Stack Overflow用户

发布于 2018-09-05 08:10:52

我相信任何你想要驳回对话框的方法,它都可能解决你的崩溃.

尝试将onClick更改为如下所示:

代码语言:javascript
复制
@Override
public void onClick(DialogInterface dialogInterface, int i) {

  dialogInterface.dismiss();

  if (opciones[i].equals("Elegir de Galeria")){
    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.setType("image/");
    startActivityForResult(intent.createChooser(intent,"Seleccione"),10);
  }
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-05 08:14:12

例外情况是,您没有附加碎片,否则附加碎片可能会被破坏,请重新附加碎片。

票数 0
EN

Stack Overflow用户

发布于 2018-09-05 08:20:24

使用isAdded检查片段是否附加到活动中。

代码语言:javascript
复制
if(isAdded){

    final CharSequence[] opciones={"Elegir de Galeria","Cancelar"};
    final AlertDialog.Builder builder=new AlertDialog.Builder(view.getContext());
    builder.setTitle("Elige una Opción");
    builder.setItems(opciones, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {

            if (opciones[i].equals("Elegir de Galeria")){
                Intent intent=new Intent(Intent.ACTION_PICK,
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/");
            startActivityForResult(intent.createChooser(intent,"Seleccione"),10);
            }else{
                dialogInterface.dismiss();
            }
        }

    });

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52180128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档