2013-06-19 118 views
2

我有一個列表存在中的每一項圖像button當我一個圖像上點擊我要開始另一個Activityintent如何通過單擊列表視圖的圖像按鈕來啓動活動?

下面是我的代碼

我的問題是我不能打電話startActivity()從定製適配器! !

定製適配器的getView()

holder.profilePicture.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Log.d("OnImageButton","Clicked"); 
       Intent zoom=new Intent(AllProfile.getAppContext(), ImageZoom.class); 
       int imageID=holder.profilePicture.getId(); 
       zoom.putExtra("ImageId", imageID); 
       startActivity(zoom) ; //This line raises error !  
          } 


     }); 
+2

使用'活動Context'有了它,像'mContext.startActivity(縮放);'。 – user370305

+0

其實startActivity()是Context類的方法。並且你已經將它寫在Adapter類的getView的Imageview的Click方法上,所以你的IDE無法找到它。 – user370305

+0

正在收到像「FLAG_ACTIVITY_NEW_TASK要求」這樣的錯誤!我現在應該怎麼做 ? –

回答

6

你應該通過你的背景下,以你的自定義適配器,當你創建:

public class MyAdapter extends BaseAdapter { 
    private Context mContext; 

    public MyAdapter (Context ctx) { 
     mContext = ctx; 
    } 

    ... 
} 

而且在getView使用上下文啓動活動:

holder.profilePicture.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      Log.d("OnImageButton","Clicked"); 
      Intent zoom=new Intent(mContext, ImageZoom.class); 
      int imageID=holder.profilePicture.getId(); 
      zoom.putExtra("ImageId", imageID); 
      mContext.startActivity(zoom) ; //This line raises error !  
         } 


    }); 

在活動中創建適配器時,您應該通過的 「這個」 作爲參數:

mAdapter = new MyAdapter(this); 
+0

絕對正確的答案沒有廢話! – 7bluephoenix

+0

正在收到「FLAG_ACTIVITY_NEW_TASK要求」這樣的錯誤!我現在應該怎麼做 ? –

+1

我忘了一些東西。創建意圖時,請使用mContext而不是AllProfile.getAppContext()。我將編輯帖子以添加它。告訴我,如果錯誤仍然發生。 –

0

你嘗試過這樣的:

MainActivity.this.startActivity(zoom); 
+0

它不起作用! ! –

相關問題