【问题标题】:Can't get image from native gallery无法从本地图库中获取图像
【发布时间】:2017-06-14 23:11:04
【问题描述】:

我创建了一个测试应用来了解如何调用本机图库、选择图像并将其显示在 imageView 上。

第一次测试

我有一个简单的设置。一个活动和一个片段(位于该活动内),该片段具有一个按钮(调用画廊意图)和一个用于所选图像的 imageView。这非常有效。

第二次测试

通过向主要活动添加另一个活动和一个选项卡主机来稍微更改设置。这个新的空活动将是启动活动,它的唯一目的是切换到包含调用画廊意图的片段的主要活动。在我从图库中选择图像之前,一切正常。选择图像后,它不会返回到我的测试应用程序。这就像一个奇怪的软崩溃。 Logcat 不显示任何错误,因此很难排除故障。我还在 OnActivityResult 覆盖的每一行上放置了一个断点,但它们从未命中。

我希望有人能阐明这件事。

SDK 版本为 23,构建工具为 23.0.3

这是我目前得到的:

Main2Activity(启动活动)

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        ActivityConfig.CreateActivity(MainActivity.class, this, true);
    }

如果您想知道 CreateActivity 的作用:

public static void CreateActivity(Class activityClass, Context context,
                                      boolean finishPreviousActivity)
    {
        Intent intent = new Intent(context, activityClass);

        if (finishPreviousActivity)
        {
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        }

        context.startActivity(intent);
    }

MainActivity(我只使用tabhost上的第三个位置,就是fragment所在的位置)

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        TabHost tabHost = (TabHost) findViewById(R.id.tabHost);

        tabHost.setup();

        tabHost.addTab(Tabs.CreateTab("T1", R.id.tabFrag2, tabHost));

        tabHost.addTab(Tabs.CreateTab("T2", R.id.tabFrag3, tabHost));

        tabHost.addTab(Tabs.CreateTab("T3", R.id.tabFrag, tabHost));

        tabHost.setCurrentTab(2);
    }

片段

private ImageView imageView;

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

        Button button = (Button)view.findViewById(R.id.Btn);

        imageView = (ImageView)view.findViewById(R.id.Img);

        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);

                intent.setType("image/*");

                startActivityForResult(intent, 100);
            }
        });

        return view;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 100)
            imageView.setImageURI(data.getData());
    }

【问题讨论】:

    标签: android-fragments android-intent android-activity android-gallery


    【解决方案1】:

    经过多次跟踪后,我注意到在选择图像后它会返回到启动活动,但不是通过onCreate 或它被覆盖onActivityResult。它正在通过onResult。我的结论是重新设计整个界面,只需要一个活动

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      相关资源
      最近更新 更多