ネイティブギャラリーを呼び出す方法、画像を選択してimageViewに表示する方法を理解するためのテストアプリケーションを作成しました。ネイティブギャラリーから画像を取得できません
第一テスト
私は、簡単なセットアップを持っていました。 1つのアクティビティと、そのアクティビティ内に存在する、選択されたイメージのボタン(ギャラリーのインテントを呼び出す)とimageViewを持つフラグメントです。これは完全に機能しました。
2試験
ビットメインアクティビティに別の活性およびタブホストを追加することにより設定を変更しました。この新しい空のアクティビティは起動アクティビティであり、ギャラリーインテントを呼び出すフラグメントを保持する主なアクティビティに切り替えることのみが目的です。ギャラリーから画像を選択するまでは、すべてうまく動作します。画像が選択されると、それは私のテストアプリには戻らない。それは奇妙なソフトクラッシュのようなものです。 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(私はタブホスト上で3番目の位置のみを使用します。フラグメントがあるところはあまりトレイル後)私は、画像を選択した後、それが戻って発射活動に行くのではなく、onCreate
を介して、または、それはだたことに気づいたエラー
@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());
}