2016-01-08 51 views
1

我正在使用適配器類來填充我的列表視圖,但是我的列表視圖中的每個項目都有兩個文本視圖,我想要setOnClick監聽器。所以我將它設置在適配器類中,當我嘗試顯示吐司時它工作正常。可以顯示吐司但不能啓動活動

但問題是我不能在OnClickListener的startActivity。該應用程序崩潰。請幫助或建議一種替代方法來實現相同。 該活動已在Manifest中提及。

這是我的代碼: -

public class Adapter_NearMe_TyreWorx extends ArrayAdapter<List_NearMe> implements View.OnClickListener { 
    ArrayList<List_NearMe> arraylist; 



    private Context context; 
    private List<List`enter code here`_NearMe> list; 
    public Adapter_NearMe_TyreWorx(Context context, int resource, List<List_NearMe> objects) { 
     super(context, resource, objects); 
     this.context = context; 
     this.List = objects; 
     arraylist = new ArrayList<List_NearMe>(); 
     arraylist.addAll(List); 

    } 
    TextView Btn_Call; 
    String Fac_landmark; 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.canvas_two, parent, false); 
     List_NearMe list= list.get(position); 

     String Fac_name=list.getName(); 
     Fac_landmark=list.getLandmark(); 

     String Fac_gMap=list.getgMap(); 
     String Fac_contact=list.getContact(); 

     TextView distance=(TextView)view.findViewById(R.id.fac_distance); 
     TextView Fac_Name=(TextView)view.findViewById(R.id.fac_name); 
     TextView Fac_Address=(TextView)view.findViewById(R.id.fac_address); 
     Btn_Call=(TextView)view.findViewById(R.id.btn_call); 
     TextView Btn_Go=(TextView)view.findViewById(R.id.btn_go); 

     Btn_Go.setOnClickListener(this); 
     return view; 
    } 



    public void onClick(View v) { 
     Toast.makeText(getContext(),"Toast text",LENGTH.SHORT).show(); //working toast code 



     Intent intent = new Intent(getContext(), SampleActivity.class); 
     getContext().startActivity(intent); 

    } 
} 
+1

您可以在崩潰後發佈logcat嗎?並且SampleActivity類的代碼 – NitroNbg

回答

1

您的constructor提供的context必須添加一個意向標誌,以避免非傳遞一個意圖 - Activity類Intent.FLAG_ACTIVITY_NEW_TASK將在意圖此標誌將罰款嘗試通過你的意圖是這樣的:

Intent intent = new Intent(getContext(), SampleActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getContext().startActivity(intent); 

或者

Intent intent = new Intent(getContext(), SampleActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getContext().startActivity(intent); 
+0

非常感謝,它的工作。 –

0
textView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       context.startActivity(new Intent(context.getApplicationContext(), SampleActivity.class)); 
      } 
     }); 

呼叫,您將在適配器的構造函數設置上下文的方法。

startActivity()只能從方法開始其在應用的背景下,作爲您的適配器是不存在,你就必須引用您已在您的適配器類

0

用上下文替換getContext()

Intent intent = new Intent(context, SampleActivity.class); 
context.startActivity(intent); 
+0

嘗試已經沒有運氣,卡皮爾斯回答didi它。 –