Hilfe bei Problem mit Listfragment

  • 4 Antworten
  • Letztes Antwortdatum
D

Didi95

Neues Mitglied
0
Moin,

ich entwickle im moment eine app für die schule. Habe mich jetzt mal an Fragmenten versucht, und bekomme nun eine Fehlermeldung: java.lang.IllegalStateException: Content view not yet created

Ich weiß nicht genau wie ich das in einer Fragmentactivity mit den layouts händeln muss. Kann mir jemand da einen tipp geben? (der Fehler muss ja irgendwo in der OnCreateView liegen)

Code:
public class fragment extends ListFragment {
	// Progress Dialog
				private ProgressDialog pDialog;
				JSONParser jParser = new JSONParser();

				ArrayList<HashMap<String, String>> substitionList;

				// url to get substition plan
				private static String url_all_products = "http://yourcloud.eichsfeld-gymnasium.de/app_neu/get_all_products.php?id=23";

				// JSON Node names
				private static final String TAG_SUCCESS = "success";
				private static final String TAG_ERROR = "error";
				private static final String TAG_PRODUCTS="substitionplan";
				private static final String TAG_DATUM = "Datum";
				private static final String TAG_Stunde = "Stunde";
				private static final String TAG_Klassen = "Klassen";
				private static final String TAG_Vertreter = "Vertreter";
				private static final String TAG_Fach = "Fach";
				private static final String TAG_Raum = "Raum";
				private static final String TAG_Art = "Art";
				private static final String TAG_Lehrer_alt = "Lehrer_alt";
				private static final String TAG_le_nach = "le_nach";
				private static final String TAG_Vertretungstext = "Vertretungstext";
				private static final String KEY_Returned="dataReturned";
				
				

				// products JSONArray
				JSONArray Vertretung = null;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Log.e("Test", "hello");
		
		// Hashmap for ListView
					substitionList = new ArrayList<HashMap<String, String>>();

					
					
					
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		
		

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		
		SharedPreferences Klassen = getActivity().getSharedPreferences("shared_string1", 0);  
        String dataReturned = Klassen.getString("KEY_ART", null);
        
        
     // Loading value class in Background Thread
      
		

		// Get listview
		ListView lv = getListView();
		
		
		LinearLayout view = (LinearLayout) inflater.inflate(R.layout.all_products, container, false);
		
		  new LoadAllProducts().execute(dataReturned);
		return view;
	}
	
	
	
	/**
	 * Background Async Task to Load all product by making HTTP Request
	 * */
	
	class LoadAllProducts extends AsyncTask<String, String, String> {
		private MenuItem menuItem;
		/**
		 * Before starting background thread Show Progress Dialog
		 * */
		protected void onPreExecute() {
			super.onPreExecute();
			
		}

		/**
		 * getting All products from url
		 * */
		protected String doInBackground(String... args) {
			
			  
			// Building Parameters
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			params.add(new BasicNameValuePair(KEY_Returned, args[0]));
			// getting JSON string from URL
			JSONObject json = jParser.makeHttpRequest(url_all_products, "POST", params);
			
			// Check your log cat for JSON reponse
			Log.d("Alle Vertretungen: ", json.toString());

			try {
				// Checking for SUCCESS TAG
				int success = json.getInt(TAG_SUCCESS);
				

				if (success == 1) {
					// Vertretung found
					// Getting Array of Vertretung
					Vertretung = json.getJSONArray(TAG_PRODUCTS);

					// looping through All Products
					for (int i = 0; i < Vertretung.length(); i++) {
						JSONObject c = Vertretung.getJSONObject(i);

						// Storing each json item in variable
						String Datum = c.getString(TAG_DATUM);
						String Klasse = c.getString(TAG_Klassen);
						String Stunde = c.getString(TAG_Stunde);
						String Vertreter = c.getString(TAG_Vertreter);
						String Fach = c.getString(TAG_Fach);
						String Raum = c.getString(TAG_Raum);
						String Art = c.getString(TAG_Art);
						String Lehrer_alt = c.getString(TAG_Lehrer_alt);
						String le_nach = c.getString(TAG_le_nach);
						String Vertretungstext = c.getString(TAG_Vertretungstext);

						// creating new HashMap
						HashMap<String, String> map = new HashMap<String, String>();

						// adding each child node to HashMap key => value
						map.put(TAG_DATUM, Datum);
						map.put(TAG_Klassen, Klasse);
						map.put(TAG_Stunde, Stunde);
						map.put(TAG_Vertreter, Vertreter);
						map.put(TAG_Fach, Fach);
						map.put(TAG_Raum, Raum);
						map.put(TAG_Art, Art);
						map.put(TAG_Lehrer_alt, Lehrer_alt);
						map.put(TAG_le_nach, le_nach);
						map.put(TAG_Vertretungstext, Vertretungstext);

						// adding HashList to ArrayList
						substitionList.add(map);
					}
				
				}else if (success == 0) {
					 
				
			} 
			}catch (JSONException e) {
				e.printStackTrace();
				}

			return null;
		}

		
		
		
		
		
		protected void onPostExecute(String file_url) {
			// dismiss the dialog after getting substition plan
			pDialog.dismiss();
			
			// updating UI from Background Thread
			getActivity().runOnUiThread(new Runnable() {
				public void run() {
					/**
					 * Updating parsed JSON data into ListView
					 * 
					 * Android möchte einen Context haben - ein Fragment allein hat keinen Context,
					 * den stellt nur die Activity dar, der dieses Fragment zugeordnet ist.
					 * bisschen irritierend, aber wenns mit fragment nicht klappt, versuch einfach noch ein getActivity() dran zu hängen ;-)
					 * */
					ListAdapter adapter = new SimpleAdapter(fragment.this.getActivity(), substitionList,
							R.layout.list_item2, new String[] { 
									TAG_Klassen, TAG_Stunde, TAG_Vertreter, TAG_Fach, TAG_Raum, TAG_Art, TAG_Lehrer_alt,TAG_le_nach, TAG_Vertretungstext},
									new int[] {  R.id.Klassen,R.id.Stunde, R.id.Vertreter, R.id.Fach,R.id.Raum,R.id.Art, R.id.Lehrer_alt,R.id.Vertretungstext });
					// updating listview
					setListAdapter(adapter);
				}
			});
			
			
		}
	
	
}
}
 
Zuletzt bearbeitet:
Wo genau bekommst du die Exception denn?
Also in welcher Zeile?
 
Kann ich leider nicht genau sagen, er gibt mir keine Zeile. Aber nach dem ausschlussverfahren ist der Fehler der

LinearLayout view = (LinearLayout) inflater.inflate(R.layout.all_products, container, false);

Denn wenn ich die jsonabfrage vor den inflater ziehe, macht er die abfrage noch und bricht dann ab. Allerdings hab ich das get List View jetzt in die OnActivity Create gezogen. Die Fehlermeldung verschwand und eine andere taucht auf, die darauf schließen läst dass er die listview nicht updaten kann. Hat nicht irgendwer schonmal sowas in die richtung gemacht und kann mir ein beispiel geben?

Ich lade einfach mal die komplette fehlermeldung hoch.


06-02 22:29:17.164: E/AndroidRuntime(16910): FATAL EXCEPTION: main
06-02 22:29:17.164: E/AndroidRuntime(16910): java.lang.NullPointerException
06-02 22:29:17.164: E/AndroidRuntime(16910): at com.example.egd.fragment$LoadAllProducts.onPostExecute(fragment.java:203)
06-02 22:29:17.164: E/AndroidRuntime(16910): at com.example.egd.fragment$LoadAllProducts.onPostExecute(fragment.java:1)
06-02 22:29:17.164: E/AndroidRuntime(16910): at android.os.AsyncTask.finish(AsyncTask.java:631)
06-02 22:29:17.164: E/AndroidRuntime(16910): at android.os.AsyncTask.access$600(AsyncTask.java:177)
06-02 22:29:17.164: E/AndroidRuntime(16910): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
06-02 22:29:17.164: E/AndroidRuntime(16910): at android.os.Handler.dispatchMessage(Handler.java:99)
06-02 22:29:17.164: E/AndroidRuntime(16910): at android.os.Looper.loop(Looper.java:137)
06-02 22:29:17.164: E/AndroidRuntime(16910): at android.app.ActivityThread.main(ActivityThread.java:4921)
06-02 22:29:17.164: E/AndroidRuntime(16910): at java.lang.reflect.Method.invokeNative(Native Method)
06-02 22:29:17.164: E/AndroidRuntime(16910): at java.lang.reflect.Method.invoke(Method.java:511)
06-02 22:29:17.164: E/AndroidRuntime(16910): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
06-02 22:29:17.164: E/AndroidRuntime(16910): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
06-02 22:29:17.164: E/AndroidRuntime(16910): at dalvik.system.NativeStart.main(Native Method)
 
Zuletzt bearbeitet:
Da steht doch die Zeile.
Was steht denn in deiner fragment Klasse in Zeile 203 ?

Ich würde jetzt vermute hier:
pDialog.dismiss();

Weil du zwar weiter oben pDialog definierst aber niemals einen Wert zuweist, also ist pDialog immer null und somit bekommst du eine NullPointerException
 
  • Danke
Reaktionen: Didi95
danke das war mein problem! Ich hätte nie gedacht dass es so etwas simples ist
 

Ähnliche Themen

4
Antworten
10
Aufrufe
1.042
jogimuc
J
D
Antworten
4
Aufrufe
427
Appento
Appento
Zurück
Oben Unten