Ich entwickle eine einfache App, wo Sie eine Liste von Musikern sehen können, und wenn Sie auf einen Musiker klicken, erhalten Sie einige Details darüber (Genre, Top-Hits und Biographie). Die Funktionalität, die ich erreichen möchte, ist dies: Wenn Sie es auf einem großen Bildschirm anzeigen, lassen Sie die Liste der Musiker auf der linken Seite und die Details sollten auf der rechten Seite erscheinen (sobald ein Musiker angeklickt wird); Wenn es sich um einen schmalen Bildschirm handelt, sollten die Details separat auf einem neuen Bildschirm angezeigt werden. Die Funktionalität sollte mit Fragmenten und Framelayouts erreicht werden.Android-Aktivität lädt falsche Layout-Datei
So habe ich die activity_main.xml
, und ich ging zu neue Ressource-Datei hinzufügen - automatisch geladen werden auf Landschaft orientierte Smartphones oder Tablets> Layout-Datei und ich activity_main.xml (w600dp)
hinzugefügt, die ich erwarte.
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/muzicari_lista"
android:layout_weight="1">
</FrameLayout>
</LinearLayout>
w600dp/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/lista_muzicara"></FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/detalji_muzicar"></FrameLayout>
</LinearLayout>
XML ist von Fragmenten, die die Liste und die Details sind recht einfach mit ein paar Textblöcke enthalten. Hier ist die onCreate Methode der mainActivity Klasse:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
unosi = new ArrayList<Muzicar>(); //let's presume there's something in this list
wideL = false;
FragmentManager fm = getFragmentManager();
//fetching FragmentManager
FrameLayout ldetalji = (FrameLayout)findViewById(R.id.detalji_muzicar);
if(ldetalji!=null){
//layout for wide screens
wideL=true;
FragmentDetalji fd;
fd = (FragmentDetalji)fm.findFragmentById(R.id.detalji_muzicar);
//checking if there is FragmentDetalji already created:
if(fd==null) {
//if not, we're creating it now
fd = new FragmentDetalji();
fm.beginTransaction().replace(R.id.detalji_muzicar, fd).commit();
}
}
FragmentLista fl = (FragmentLista)fm.findFragmentByTag("Lista");
//we're checking if there's already fl created
if(fl==null){
//if it hasn't been created:
fl = new FragmentLista();
Bundle argumenti = new Bundle();
argumenti.putParcelableArrayList("Alista",unosi);
fl.setArguments(argumenti);
fm.beginTransaction().replace(R.id.muzicari_lista, fl).commit();
}else{
//case when we change from portrait to landscape, and there was FragmentDetalji already open
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
Klassen FragmentDetalji
und FragmentLista
nicht viel besonderes tun onCreateView
neben nutzen (obwohl ich kann sie hinzufügen, wenn sie die Quelle des Problems sein könnte).
Das Problem ist, dass, egal was ich zum Laden dieser App verwenden, Activity_main wird in seiner Standardform geladen, nicht die w600dp
Version! Was mache ich falsch?
Bitte posten Sie Ihre res Ordnerstruktur Screenshot. –
@Shadab Ansari http://prntscr.com/alaq06 activity_pocetni = activity_main. –
Bitte fügen Sie Ihre Manifest-Datei ein. –