2014-11-22 103 views
0

我有一個Activity,它調用startActivityForResult(),以便用戶可以從庫中選取圖像。我在相同的Activity中得到結果,並在ImageView中顯示。我也有一個微調動態填充onCreate()。它只有在用戶第一次選擇圖像時纔會很好,如果他再次嘗試,我的應用會崩潰,因爲它會再次加載微調器(換句話說,它會調用onCreate(),但如果這是第一次,則不會)! )。如果多次調用startActivityForResult()會崩潰

相關的代碼部分:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    spinner = (Spinner) findViewById(R.id.spinner); 
    loadSpinnerData(); // populate spinner from DB 
    loadImageFromGalleryListener(); // click listener 
} 

private void loadImageFromGalleryListener() { // Called when user clicks on a button 
    loadFile.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(Intent.createChooser(intent, "Select picture"), LOAD_FILE_REQUEST); 
     } 
    });  
} 

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

    if(resultCode != RESULT_CANCELED){ 
     if (requestCode == LOAD_FILE_REQUEST && resultCode == RESULT_OK) { 
      // ... LOGIC TO WRITE FILE ON IMAGEVIEW 
     } 
    } 
} 

所以..我怎樣才能避免在用戶試圖選擇一個圖像,第二次打電話onCreate()

回答

0

你不能阻止被調用的onCreate()。 檢查onCreate中是否有(savedInstanceState == null)而不是兩次。

相關問題