Android GirdFragment reloaden

antonbracke

Mitglied
Hallo zusammen,

ich baue mir zur Zeit einen AppLauncher der als Kiosk-System diehen soll.

Das hab ich auch schon soweit ganz gut hinbekommen! Meine Idee war es jetzt die Apps zentral über eine PHP-Seite freizuschalten.

Das heißt also, dass die PHP Datei geladen werden muss (Läuft auch schon) und dann die Liste aktualiesiert und angezeigt werden muss. UND DABEI SCHEITERE ICH! Die Liste spuckt mir beim Laden dann nur noch Fehler aus!

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

		setEmptyText("No Applications");

		AppWhiteList wh = new AppWhiteList(getActivity());
		wh.updateList("http://java-forum.org/datei.php");

		mAdapter = new AppListAdapter(getActivity());
		setGridAdapter(mAdapter);

		// till the data is loaded display a spinner
		setGridShown(false);
		
		TextView output = (TextView) getActivity().findViewById(R.id.output);
		if (isConnected()) {
			output.append("ONLINE");
			output.setTextColor(Color.GREEN);
		} else {
			output.append("OFFLINE");
			output.setTextColor(Color.RED);
		}
		
		new Thread(new Runnable() {

			@Override
			public void run() {
				 while (true) {
					if (HomeScreen.wh.isUpdated()) {
						
		                                // create the loader to load the apps list in background
		                                getLoaderManager().initLoader(0, null, appgf);
						break;
					}
				}

			}
		}).start();

	}

[WR]
03-10 22:26:42.384: E/AndroidRuntime(19672): FATAL EXCEPTION: Thread-2303
03-10 22:26:42.384: E/AndroidRuntime(19672): Process: net.fsgpreetz.launcher, PID: 19672
03-10 22:26:42.384: E/AndroidRuntime(19672): java.lang.ExceptionInInitializerError
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.content.AsyncTaskLoader.onForceLoad(AsyncTaskLoader.java:113)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.content.Loader.forceLoad(Loader.java:218)
03-10 22:26:42.384: E/AndroidRuntime(19672): at net.fsgpreetz.launcher.AppsLoader.onStartLoading(AppsLoader.java:92)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.content.Loader.startLoading(Loader.java:198)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.app.LoaderManagerImpl$LoaderInfo.start(LoaderManager.java:265)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.app.LoaderManagerImpl.installLoader(LoaderManager.java:513)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:500)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.app.LoaderManagerImpl.initLoader(LoaderManager.java:553)
03-10 22:26:42.384: E/AndroidRuntime(19672): at net.fsgpreetz.launcher.AppsGridFragment$1.run(AppsGridFragment.java:62)
03-10 22:26:42.384: E/AndroidRuntime(19672): at java.lang.Thread.run(Thread.java:841)
03-10 22:26:42.384: E/AndroidRuntime(19672): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.os.Handler.<init>(Handler.java:200)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.os.Handler.<init>(Handler.java:114)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.content.ModernAsyncTask$InternalHandler.<init>(ModernAsyncTask.java:466)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.content.ModernAsyncTask$InternalHandler.<init>(ModernAsyncTask.java:466)
03-10 22:26:42.384: E/AndroidRuntime(19672): at android.support.v4.content.ModernAsyncTask.<clinit>(ModernAsyncTask.java:75)
03-10 22:26:42.384: E/AndroidRuntime(19672): ... 10 more
[/WR]

Mit freundlichen Grüßen

Anton Bracke
 

dzim

Top Contributor
Steht doch da: "Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()".

Ich glaube (bin mir jetzt nicht zu 100% sicher) dass deine onActivityCreate einfach noch nicht durch ist (bzw. in den Super-Klassen) und da rennt dann dein Thread auch schon los und versucht den Loader zu initialisieren.
Ich glaube (schon wieder), dass du die Operation am besten in #onResume() startest.
 
Zuletzt bearbeitet:

Neue Themen


Oben