2011-10-18 32 views
3

我想發送一個活動ImageView窗體到另一個活動。當我試圖使用捆綁的概念,然後在B類它顯示空指針傳遞從A類圖像視圖,以B級exception.Below是我的A類代碼我怎樣才能通過在Android的活動之間的圖像視圖

public class First extends Activity { 
    Cursor cursor1; 
    boolean y,n; 
    ImageView login; 
    Button enroll; 
    String AndroidId; 
    SQLiteDatabase db1,db; 
    private ContentValues values; 
    DopenHelper helper; 


    String TableName = "tbl_finger"; 
    ImageView FingerImageData; 
    String fingerID,DivID,enrolledtype; 



    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause();   
     helper.close(); 
     db.close(); 
     db1.close(); 

    } 

    protected void onResume() 
    { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     helper =new DopenHelper(getApplicationContext()); 
     db=helper.getWritableDatabase(); 
     db1=helper.getWritableDatabase(); 
     values=new ContentValues(); 
     enroll=(Button)findViewById(R.id.enroll_button); 



     FingerImageData = (ImageView)findViewById(R.id.fingerid); 
     AndroidId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID); 
     //"[[email protected]"; 
     //"[email protected]";  

      helper = new DopenHelper(First.this);   

      cursor1 = db1.rawQuery("SELECT template,enrolled,deviceID FROM " + TableName, null); 

      try { 

       db1 = this.openOrCreateDatabase("remoteid.db", MODE_PRIVATE, null); 

       if(cursor1 != null) 
       { 
        if(cursor1.moveToFirst()) 
        { 
         do { 
          DivID = cursor1.getString(cursor1.getColumnIndex("deviceID")); 
          fingerID = cursor1.getString(cursor1.getColumnIndex("template")); 
          enrolledtype = cursor1.getString(cursor1.getColumnIndex("enrolled")); 

          //Toast.makeText(getApplicationContext(), DivID, Toast.LENGTH_LONG).show(); 

         }while (cursor1.moveToNext()); 
        } 
       } 

      } 

      catch(Exception e) { 
       Log.e("Error", "Error", e); 

      } finally { 
       if (db1 != null) 
        db1.close(); 

      } 

      cursor1.close(); 

      final Bundle bundle = new Bundle(); 

     enroll.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 


       if((FingerImageData.getContext().toString()).equals(fingerID)) 
       { 
        Intent menuintent=new Intent(First.this,Menu.class); 
        bundle.putString("ThumbInfo2", FingerImageData.toString());     
        menuintent.putExtras(bundle); 
        startActivity(menuintent); 

       } 
       /*else if((FingerImageData.getContext().toString()).equals(fingerID) && AndroidId.equals(DivID) ) 
        { 
         Intent menuintent=new Intent(First.this,Menu.class); 
         startActivity(menuintent); 

        } */ 
       else 
       { 

        values.put("template", FingerImageData.getContext().toString()); 
        values.put("enrolled", getEnrolledType()); 
        values.put("DeviceID", AndroidId.getBytes().toString()); 
        db.insert("tbl_finger", "Id", values); 


        bundle.putString("ThumbInfo1", FingerImageData.toString());      
        Intent enroll=new Intent(First.this,Enroll.class); 
        enroll.putExtras(bundle); 
        startActivity(enroll);      

       } 

      } 

      private String getEnrolledType() { 
       // TODO Auto-generated method stub 
       //AndroidId.equals(DivID) && 
       if((FingerImageData.getContext().toString()).equals(fingerID)){ 
        return "N"; 

       } 
       else { 
        return "Y"; 
       } 

      } 
     }); 

    } 


    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.first);   

    } 

} 

在這裏B類錯誤: -

+0

你是如何傳遞ImageView的? – Brian

+0

你可以發佈一個簡潔完整的代碼示例:你正在嘗試做什麼。您可以刪除所有與您遇到的問題不相關的額外代碼。它使我們更容易幫助你。 –

回答

9

你不應該在活動之間傳遞意見。您應該使用額外功能來傳遞意圖中的圖像位置,並將其重新加載到新的活動中。

例:

Intent intent = new Intent(context, MyActivity.class); 
    intent.putExtra("imagePath", pathToImage); 
    startActivity(intent); 

而且在您接收活動:

String path = getIntent().getStringExtra("imagePath"); 
    Drawable image = Drawable.createFromPath(path); 
    myImageView.setImageDrawable(image); 
5

你絕對想從一個活動傳遞的形象圖到另一個。 Views保留對其ViewContainer和父母Activity的引用。這可以防止Garbage Collector在擁有ViewActivity隱藏或關閉時清除內存。相反,您應該通過使用Intents從活動複製ImageView所需的信息。