2017-03-26 1 views
0

Ich möchte Aktivität aus Fragment durch Klicken auf die ListView öffnen, aber ich bekomme einen Fehler in der jeweiligen Zeile. Ich habe unten erwähnt Ich habe viele Unterlagen durchgelaufen, aber keiner arbeitet für mich.Fehler beim Öffnen der Aktivität von Fragment durch ListView mit Switch-Fall

Jede Hilfe wäre großartig. Vielen Dank!

public class ServicesFragment extends Fragment { 


    ListView listView; 
    String[] servicesNameArray; 
    int[] serviceImages = { 
      R.drawable.ic_menu_camera, 
      R.drawable.ic_menu_camera, 
      R.drawable.ic_menu_camera}; 

    public ServicesFragment() { 
    } 
    @Override 
    public View onCreateView(final LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.services_fragment, container, false); 
     Resources resources = getResources(); 
     servicesNameArray = resources.getStringArray(R.array.servicesName); 
     listView = (ListView) view.findViewById(R.id.listView_services); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
       int positionNew = Integer.parseInt(String.valueOf(position)); 
       int pos = (int) adapterView.getItemAtPosition(positionNew);//error in this line 
       switch (pos) { 

        case 0: 
         Intent intent = new Intent(getActivity(), SlipActivity.class); 
         startActivity(intent); 
         break;}}}); 

     ServicesAdapter adapter = new ServicesAdapter(this.getActivity(), servicesNameArray, serviceImages); 
     listView.setAdapter(adapter); 
     return view; 
    } 

    public class ServicesAdapter extends ArrayAdapter<String> { 
Context c; 
     int[] servicesImageArray; 
     String[] servicesNameArray; 
public ServicesAdapter(Context context, String[] servicesNameArray, int[] serviceImages) { 
      super(context, R.layout.services_layout, R.id.listView_services, servicesNameArray); 
      Log.d("ashu", "adapter called"); 
      this.c = context; 
      this.servicesImageArray = serviceImages; 
      this.servicesNameArray = servicesNameArray;}}} 

Logcat:

  java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 
       at com.bulletin.theinvincible.nautical.ServicesFragment$1.onItemClick(ServicesFragment.java:73) 
+0

Was ist der Fehler? –

+0

Ich habe meinen Logcat Fehler –

Antwort

1

Vom Documentation

Object getItemAtPosition (int position): Ruft die mit zugehörigen Daten der angegebenen Position in der Liste.

Wenn Sie eine neue Aktivität basierend auf der Listenansichtsposition starten möchten. Sie können einfach versuchen:

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

     switch (position) { 
        case 0: 
         Intent intent = new Intent(getActivity(), SlipActivity.class); 
         startActivity(intent); 
         break; 
       } 
     } 
}); 
+0

eingefügt, danke, es hat perfekt funktioniert –

Verwandte Themen