2. Activity mit Listview wird nicht angezeigt

  • 5 Antworten
  • Neuester Beitrag
Diskutiere 2. Activity mit Listview wird nicht angezeigt im Android App Entwicklung im Bereich Betriebssysteme & Apps.
L

Lolipopkebab

Neues Mitglied
Hallo zusammen

Ich habe ein Layout erstellt, welche eine Listview beinhaltet.
Der Java Code:
Code:
public class MainActivity extends ActionBarActivity {


    public ListView lv1;
    public String[] listentxt = {"Activity", "bsdfsd", "sdfsdf", "sdfsdf", "sdfsdf"};

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


        lv1 = (ListView) findViewById(R.id.listView);

        ArrayAdapter<String> listenadapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, listentxt);
        lv1.setAdapter(listenadapter);
        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                switch (position) {

                    case 0: {
                        setContentView(R.layout.activity_main_activity2);
                        break;
                    }
                }
            }
        });
    }
}
Wenn man danach auf den ersten Eintrag klickt öffnet sich erfolgreich das 2te Layout, jedoch wird dort keine Listview angezeigt der Java Code sieht so aus:
Code:
public class MainActivity2Activity extends ActionBarActivity {


    public ListView lv2;
    public String[] listentxt = {"geklappt", "sdfsdf", "safdadf", "asdfasdf", "sdfasdf"};

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

        lv2 = (ListView) findViewById(R.id.listView2);

        ArrayAdapter<String> listenadapter2 = new ArrayAdapter<String>(MainActivity2Activity.this, android.R.layout.simple_list_item_1, listentxt);
        lv2.setAdapter(listenadapter2);
        lv2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                switch (position) {

                    case 0: {
                        setContentView(R.layout.activity_main_activity2);
                        break;
                    }
                }
            }
        });
    }
}
Komischerweise wird ein Textview oder andere Sachen angezeigt die Listview jedoch nicht.

An was kann das liegen? Kann mir jemand helfen?

Vielen Dank
Lolipopkebab
 
Jaiel

Jaiel

Experte
du solltest contentview nicht zweimal setzen!!!

ausserdem versuchst du wohl deine activity zu starten bloß weißt du cniht wie du das amchen sollst...
auf jeden fall nciht in dem du setContentView aufrufst
 
missspelled

missspelled

App-Anbieter (In-App)
Hallo, kann mich jaiel nur anschließen, dein Code sieht nicht so berauschend aus.

Also: 1x setContentView() und dann zum Starten von "MainActivity2Activity" (was auch immer das sein soll ^^)

startActivity(new Intent(MainActivity.this, MainActvity2Activity.class));
// finish(); // <- das musst du selbst wissen ;-)

Ob das wirklich der Code ist den du brauchst, oder ob nicht eine ganz andere Implementierung sinnvoller wäre, kannst du selbst am besten beurteilen, wenn du das Google Tutorial für Beginner durchgearbeitet hast. Ich könnte mir vorstellen, dass dich Fragmente interessieren könnten.
 
Jaiel

Jaiel

Experte
hat sich also jemand erbarmt...

manche sagen getAplicationcontext() statt direkt MainActivity.this zu rufen wäre besser falls irgendwie MainActivity null ist (wieso auch immer)

du setzt ja sogar in beiden die contentview neu :ohmy:

nciht das das nciht geht nur...ist dann deine vorherige viewhierarchie fürn a*** und GC hat mehr oder weniger hart zu arbeiten
 
L

Lolipopkebab

Neues Mitglied
Hallo zusammen

Vielen Dank für eure Hilfe.

Ich habe beide Vorschläge befolgt. Leider zeigt meine LogCat dies an:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.asdf.test/com.example.asdf.test.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference


Der Code um auf das 2te Layout zu kommen sieht nun so aus:
package com.example.asdf.test;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

import junit.runner.Version;


public class MainActivity extends ActionBarActivity {


public ListView lv1;
public String[] listentxt = {"Activity", "radnom", "radnom ", "radnom", "radnom"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);



lv1 = (ListView) findViewById(R.id.listView);

ArrayAdapter<String> listenadapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, listentxt);
lv1.setAdapter(listenadapter);
lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {

case 0: {
Intent i = new Intent(getApplicationContext(),MainActivity2Activity.class);
startActivity(i);
break;
}
}
}
});
}
}

So weit ich sehe sollte der Fehler dort sein:
lv1.setAdapter(listenadapter);

Oder was ist daran falsch?

Vielen Dank für eure Hilfe
Lolipopkebab
 
Zuletzt bearbeitet:
missspelled

missspelled

App-Anbieter (In-App)
Hallo, bist du sicher dass deine GUI Elemente auch in der xml Datei vorhanden sind? Vielleicht ging ja beim Trennen gestern die Listview (oä) verloren.? Im Code erkenne ich keinen Fehler.