[Android / Java] new android.support.v4.view.ViewPager(...) app crash

  • Ersteller Ersteller Tersus
  • Erstellt am Erstellt am
T

Tersus

Gast
Guten Abend,

ich möchte einen ViewPager erstellen, aber meine Anwendung stürzt ab, wenn ich diesen mit new erzeuge!

Wenn ich den ViewPager in meiner *.xml erzeuge und dann mittels findViewByID darauf referenziere, funktioniert alles wunderbar.
Wie kann ich einen ViewPager jedoch mit new erzeugen, ohne ihn in der *.xml stehen zu haben?
Oder anders gefragt. Welche Werte werden denn bei dem neuen ViewPager gesetzt, wenn dieser in die *.xml geschrieben wird?

Gruß
 
Welcher Fehler wird denn ausgegeben?
Werte werden keine gesetzt, die du nicht angibst. width und height muss du ja eh angeben ...

Allgemein wären ein paar Informationen sinnvoll. Quellcode, Layout usw. usf.
 
Hier die Variante mit new


Code:
public class HauptAktivitaet extends FragmentActivity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_haupt_aktivitaet);

		GridLayout gl = (GridLayout) findViewById(R.id.GridLayout1);

		/* Folgender Block führt zum Absturz der Anwendung */

		{
			GridLayout.LayoutParams gllp = new GridLayout.LayoutParams(
					GridLayout.spec(0), GridLayout.spec(0));
			gllp.setGravity(Gravity.FILL);
			gllp.height = 0;
			gllp.width = 0;

			ViewPager vp = new ViewPager(this);

			vp.setAdapter(new _FragmentStatePagerAdapter(this
					.getSupportFragmentManager(), this));
			gl.addView(vp, gllp);
		}
		
		/* Folgender auskommentierter Block funktioniert */

//		{
//
//			ViewPager vp = (ViewPager) findViewById(R.id._ViewPager);
//			vp.setAdapter(new _FragmentStatePagerAdapter(this
//					.getSupportFragmentManager(), this));
//		}
		
	}

}

Die XML schaut wie folgt aus.

Code:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/GridLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="1"
    android:rowCount="1"
    android:orientation="horizontal"
    tools:context=".HauptAktivitaet" >

    <android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/_ViewPager"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_column="0"
        android:layout_gravity="fill"
        android:layout_row="0" />

</GridLayout>

Ich muss mal schauen, wie ich die Fehlermeldung auslesen kann.
 
Wenn du mit Eclipse arbeitest: Window -> Show View -> Logcat

Ist für ein erstes Debugging gut geeignet. :)

Weswegen möchtest du dein Layout eigentlich nicht über XML definieren?
 
screem schrieb:
Weswegen möchtest du dein Layout eigentlich nicht über XML definieren?

Na der Abhänigkeit wegen. Will ich eine Klasse mal exportieren, welche auf Elemente in einer *.xml zurückgreift, geht das völlig schief. Dann sind da noch die Ungereimtheiten, dass eine *.xml immer ein Layout ist. Wenn ich also z.B. eine ViewGroup, wie das GridLayout, erweitern möchte, um diese standardmäßig mit Inhalt zu füllen, kann ich keine Elemente aus einem Layout, welches als *.xml angelegt wurde, nutzen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben