1

重建我的項目後,我得到這個錯誤:Android - 沒有合適的構造發現

Cannot resolve constructor 'Intent(anonymous android.widget.AdapterView.OnItemClickListener,java.lang.Class>)'

有誰什麼錯誤意味着,什麼是錯的構造,如何解決這個問題?

public class FragmentWCLine extends android.support.v4.app.Fragment { 

    public final static String EXTRA_MESSAGE = "Station_key"; 

    private class WC { 
     private CharSequence station; 
     private CharSequence zone; 
     private Class<? extends Activity> activityClass; 
     private Class<? extends android.support.v4.app.Fragment> fragmentClass; 

     public WC(int stationResId, int zoneResId, Class<? extends Activity> activityClass, Class<? extends android.support.v4.app.Fragment> fragmentClass) { 
      this.fragmentClass = fragmentClass; 
      this.activityClass = activityClass; 
      this.station = getResources().getString(stationResId); 
      this.zone = getResources().getString(zoneResId); 
     } 

     @Override 
     public String toString() { return station.toString(); } 
     public String getzone(){ return zone.toString(); } 
    } 

    private static WC[] mWC; 

    /** 
    * Whether or not the activity is in two-pane mode, i.e. running on a tablet 
    * device. 
    */ 
    private boolean mTwoPane; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View v = inflater.inflate(R.layout.fragment_wc_line, container, false); 

     // Instantiate the list of stations. 
     mWC = new WC[]{ 
       new WC(R.string.bank, R.string.zone_1, WCBankActivity.class, FragmentWCBank.class), 
       new WC(R.string.wat, R.string.zone_1, WCWATActivity.class, FragmentWCWAT.class) 
     }; 

     final ListView listView = (ListView)v.findViewById(R.id.list_wc); 
     listView.setAdapter(new MyAdapter(getActivity(), mWC)); 
     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       if(mTwoPane){ 

        setItemNormal(); 
        View rowView = view; 
        setItemSelected(rowView); 
       } 
       else{ 
        Intent intent = new Intent(this, mWC[position].activityClass); 

        String station = mWC[position].station.toString(); 
        intent.putExtra(EXTRA_MESSAGE, station); 

        startActivity(intent); 
       } 
      } 

      public void setItemSelected(View view){ 
       View rowView = view; 
       view.setBackgroundColor(Color.parseColor("#66CCCC")); 

       TextView tv0 = (TextView)rowView.findViewById(R.id.list_item_station); 
       tv0.setTextColor(Color.parseColor("#000099")); 

       TextView tv1 = (TextView)rowView.findViewById(R.id.list_item_zone); 
       tv1.setTextColor(Color.parseColor("#000099")); 
      } 

      public void setItemNormal() 
      { 
       for (int i=0; i< listView.getChildCount(); i++) { 
        View v = listView.getChildAt(i); 
        v.setBackgroundColor(Color.TRANSPARENT); 

        TextView tv0 = ((TextView) v.findViewById(R.id.list_item_station)); 
        tv0.setTextColor(Color.WHITE); 

        TextView tv1 = ((TextView) v.findViewById(R.id.list_item_zone)); 
        tv1.setTextColor(Color.parseColor("#B5B5B5")); 
       } 
      } 
     }); 

     return v; 
    } 

    static class MyAdapter extends BaseAdapter { 

     static class ViewHolder { 
      TextView station; 
      TextView zone; 
     } 

     LayoutInflater inflater; 
     WC[] mWC; 

     public MyAdapter(Context contexts, WC[] samples) { 
      this.mWC = samples; 
      inflater = LayoutInflater.from(contexts); 
     } 

     @Override 
     public int getCount() { 
      return mWC.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      return mWC[position]; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     /**set selected position**/ 
     private int selectPosition = -1; 
     public void setSelectPosition(int position){ 
      if(position!=selectPosition){ 
       selectPosition = position; 
      } 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ViewHolder viewHolder; 
      if (convertView == null) { 
       convertView = inflater.inflate(R.layout.list_item_dualline, null); 
       viewHolder = new ViewHolder(); 

       viewHolder.station = (TextView) convertView.findViewById(R.id.list_item_station); 
       viewHolder.zone = (TextView) convertView.findViewById(R.id.list_item_zone); 
       convertView.setTag(viewHolder); 
      } else { 
       viewHolder = (ViewHolder) convertView.getTag(); 
      } 
      viewHolder.station.setText(mWC[position].station); 
      viewHolder.zone.setText(mWC[position].getzone()); 

      //change item color 
      if(position==selectPosition){ 
       convertView.setBackgroundColor(Color.parseColor("#000099")); 
       viewHolder.station.setTextColor(Color.parseColor("#000099")); 
      }else { 

      } 

      return convertView; 
     } 
    } 
} 

回答

5

你必須與Context問題用於您Intent,變:

Intent intent = new Intent(this, mWC[position].activityClass); 

Intent intent = new Intent(getActivity(), mWC[position].activityClass); 

Intent intent = new Intent(view.getContext(), mWC[position].activityClass); 
+1

輝煌。這工作。非常感謝:-) – MacaronLover

+0

你好! = P – Jorgesys

0

如果你得到的錯誤在方面

做到這一點...

Intent i = new Intent(fragment.this, activity.class); // It won't works 

,而不是做..

Intent i = new Intent(getActivity(), activity.class); 

startActivity(我);

0

問題就出在線路

Intent intent = new Intent(this, mWC[position].activityClass);

你將不得不改變,要

Intent intent = new Intent(getActivity(),mWC[position].activityClass); 
相關問題