0

我創建了一個測試應用程序,以瞭解如何調用本地圖庫,選擇圖像並將其顯示在imageView上。無法從本地圖庫中獲取圖像

1日測試

我做了一個簡單的設置。一個活動和一個片段(駐留在該活動中),它具有一個按鈕(調用畫廊意圖)和一個用於所選圖像的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上的第三個位置。這就是這個片段)

@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

很多線索,我注意到一個錯誤之後,選擇它可以追溯到開展活動的圖像,而不是通過onCreate或它的後覆蓋onActivityResult。這是通過onResult。我的結論是重新設計整個界面,只需要一個活動