2016-05-14 13 views
-2

nicht finden Ich habe eine App mit einem tabLayout von 2 Fragmenten mit listView und ich möchte den Inhalt von einem URLConnection mit Json laden, aber in der Fragment.java Datei geht mir der Fehler: kann nicht Methode 'findViewByID (int)' auflösenFehler: kann Symbol Methode findviewbyid

public class Fragment1 extends Fragment implements URLConnectionResponse { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     CanteenProvider canProv = new CanteenProvider(); 
     canProv.delegate = this; 
     canProv.getDishes(getActivity().getApplicationContext()); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.activity_canteen_tab_mensa, container, false); 
    } 

    @Override 
    public void processFinish(List<?> output) { 
     ListView canteenList = (ListView) findViewById(R.id.mensalistView); 
     ArrayList<Dish> canteenItemContent = new ArrayList<Dish>(); 
     canteenItemContent = (ArrayList<Dish>)output; 

     CanteenListAdapter canteenAdapter = new CanteenListAdapter(canteenItemContent, this); 
     canteenList.setAdapter(canteenAdapter); 
    } 


} 

Antwort

1

folgen diese Antwort auf stack overflow

private ListView canteenList=null; 
    private View view = null; 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.activity_canteen_tab_mensa, container, false); 
     canteenList = (ListView)view.findViewById(R.id.mensalistView); 
     return view; 
    } 

    @Override 
    public void processFinish(List<?> output) { 

     ArrayList<Dish> canteenItemContent = new ArrayList<Dish>(); 
     canteenItemContent = (ArrayList<Dish>)output; 

     CanteenListAdapter canteenAdapter = new CanteenListAdapter(canteenItemContent, view.getContext()); 
     canteenList.setAdapter(canteenAdapter); 
    } 
0

Sie haben eine globale Variable zu der Zeit in onCreateView aufzublasen wie diese mit dem

mainContent = inflater.inflate(R.layout.activity_canteen_tab_mensa, container, false); 
return mainContent; 

und am Ende

View mainContent;

Danach erstellen Bezug von Der Hauptteil Sie können findViewById so

ListView canteenList = (ListView) mainContent.findViewById(R.id.mensalistView);

1

sollten Sie findViewById von View Klasse. so können Sie eine globale Variable für Ihre ListView erstellen:

ListView canteenList; 

dann in Ihrem onViewCreated initialisieren Ihre canteenList

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     canteenList = view.findViewById(R.id.mensalistView); 
    }