2012-04-09 40 views
0

我試圖從我的onActivityResult方法檢索一些信息,在我的情況是一個圖片用戶已選擇一個子活動,我相信工作正常,我有問題是當我試圖分配該圖片(以字節數組的形式)到我在主要活動中的變量。我試圖在onClick方法中使用該變量,但由於某種原因,當我嘗試使用該變量時,它的值始終爲空。 會發生什麼? 這裏是代碼:Android,爲onActivityResult方法中的變量賦值?

poptions.setOnItemClickListener(new OnItemClickListener(){ 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int pos, long id) { 
      final Intent i; 
      switch(pos){ 
      // Adjunta imagen 
      case 0: 
       i = new Intent(Intent.ACTION_GET_CONTENT); 
       i.setType("image/jpeg"); 
       startActivityForResult(i,1); 
       //Toast.makeText(view.getContext(), "MIERDA!!", 30).show(); 
       break; // more cases below, not relevant to my question.... 
       } 
     } 

    }); 

我onActivityResult方法:

編輯:解決的辦法是改變

if(resultCode==1) 

到:

if(resultCode==RESULT_OK) 

結果,RESULT_OK實際上等於-1。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent pic){ 
    super.onActivityResult(requestCode, resultCode, pic); 
    if(resultCode==1){ 

     Uri selectedpic = pic.getData(); 

     try { 
      Bitmap bitmappic = MediaStore.Images.Media.getBitmap(
        this.getContentResolver(), 
        selectedpic); 

      ByteArrayOutputStream picstream = new ByteArrayOutputStream(); 

      bitmappic.compress(Bitmap.CompressFormat.JPEG, 100, picstream); 
      setPicture(picstream.toByteArray()); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 

我onClickListener方法在那裏我嘗試使用是我setPicture方法上面設置的圖片。

 btnSend.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       Bundle usrpostData = new Bundle(); 
       if(txtMsg.getText().toString().equals("")){ 
        Toast.makeText(v.getContext(), "MSG", 10).show(); 
       }else{ 
        String msg = txtMsg.getText().toString(); 
        usrpostData.putString("message", msg); 
        if(getPicture()==null){ 
         Toast.makeText(v.getContext(),"NULL",30).show(); 
        }else{ 
         try { 
          // do something with the picture... 

         } catch (FileNotFoundException e) { 
          e.printStackTrace(); 
         } catch (MalformedURLException e) { 
          e.printStackTrace(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
      } 

     }); 

正如你可以看到我把一個小測試,和Getpicture中方法始終返回null,我試圖.equals而不是==,它使我的應用程序崩潰。 任何幫助表示讚賞

+0

你可以發表什麼你調用btnSend.onClickListener()的Activity方法嗎?如果它在onCreate()中,那麼保存該圖片的原始Activity實例已被銷燬。 – hopia 2012-04-09 03:49:49

+0

@hopia是的,我的btnSend.onClickListener()在我的onCreate()方法中,在我稱之爲子活動的主要活動中。 – Slacker616 2012-04-09 03:55:01

+0

只是想確認一下,你確定在onActivityResult()中檢查了正確的參數嗎?我認爲它應該是requestCode。 resultCode通常會返回RESULT_OK,RESULT_CANCEL等,認爲您需要檢查requestCode。沒有什麼與尿查詢有關:( – Shubhayu 2012-04-09 04:51:41

回答

0

解決的辦法是改變

if(resultCode==1) 

到:

if(resultCode==RESULT_OK) 

原來,RESULT_OK實際上等於-1。