0

ネイティブギャラリーを呼び出す方法、画像を選択して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()); 
    } 

答えて

0

ですオーバーライドされたonActivityResult。それはonResultを経由していた。私の結論は、1つのアクティビティだけが必要とされるようにインターフェイス全体を再設計することでした。

関連する問題