2tes Listview auf 2ter Seite wird nicht angezeigt

  • Antworten:16
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 18

30.03.2015, 15:54:25 via Website

Hallo zusammen

Ich habe eine ListView erstellt, welche beim aufstarten der App sich öffnet. Wenn ich dann ein Objekt aus der Listview anklicke sollte es mich auf ein anderes Layout wechseln, welches auch funktioniert.

 switch (lv1.getPositionForView(view)) {

                case 0: {
                    setContentView(R.layout.portrait);
                    break;
                }

Auf der Portrait Seite wird dann ein Textfeld angezeigt.
Sobald ich dort aber eine ListView reinmache wird die nicht angezeigt.
An was kann das liegen?

Die Portrait Setie sieht so aus:

package com.example.nico.myapplication;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Portrait extends ActionBarActivity {

public ListView lv2;
public String[] listentxt = {"Portrait", "blau", "gelb", "grün", "rot"};

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

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

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

            switch (lv2.getPositionForView(view)) {

                case 0: {
                    setContentView(R.layout.portrait);
                    break;
                }
                case 1: {
                    setContentView(R.layout.blau);
                    break;
                }
                case 2: {
                    setContentView(R.layout.gelb);
                    break;
                }
                case 3: {
                    setContentView(R.layout.grün);
                    break;
                }
                case 4: {
                    setContentView(R.layout.rot);
                    break;
                }
            }
        }
    });
}

}

— geändert am 30.03.2015, 16:02:15

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.158

30.03.2015, 15:58:40 via Website

Hallo Lolipopkebab Lolipop,

Herzlich willkommen bei uns im Forum :)

Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel innerhalb der nächsten 24 Stunden, spätestens jedoch bei deinem nächsten Besuch noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)

Danke :-)

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Antworten
  • Forum-Beiträge: 18

30.03.2015, 16:04:09 via Website

Ludy

Hallo Lolipopkebab Lolipop,

Herzlich willkommen bei uns im Forum :)

Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel innerhalb der nächsten 24 Stunden, spätestens jedoch bei deinem nächsten Besuch noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)

Danke :-)

Klar, tut mir Leid!

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

30.03.2015, 16:29:05 via Website

Hallo,
du setzt in deinem Code nur das Layout.
Da du aber eine Activity starten willst, benötigst du eien anderen Code.

    Intent i = new Intent(getApplicationContext(),Portrait.class);
   startActivity(i);

Wenn der Code ausgeführt wird, wird eine 2. Activity gestartet, welche dann die ListView mit Inhalt beeinhaltet.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 18

30.03.2015, 16:36:52 via Website

Pascal P.

Hallo,
du setzt in deinem Code nur das Layout.
Da du aber eine Activity starten willst, benötigst du eien anderen Code.

    Intent i = new Intent(getApplicationContext(),Portrait.class);
   startActivity(i);

Wenn der Code ausgeführt wird, wird eine 2. Activity gestartet, welche dann die ListView mit Inhalt beeinhaltet.

Hallo

Vielen Dank für deine Hilfe.
Ich habe den Code so eingefügt, aber leider wird die Listview noch immer nicht angezeigt.

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            switch (lv2.getPositionForView(view)) {

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

                }

Was habe ich falsch gemacht?

PS: Ist meine erste App!

Vielen Dank
Kebab

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

30.03.2015, 16:45:10 via Website

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        switch (position) {

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

            }}

PS: Vollzitate des vorherigen Posts sind unötig, deswegen unterlasse diese ;) Danke

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 18

30.03.2015, 17:34:25 via Website

Hallo

Ehhmm mache ich etwas falsch?

Mein Code sieht nun so aus:

public class MainActivity extends ActionBarActivity {


public ListView lv1;
public String[] listentxt = {"Portrait", "blau", "gelb", "grün", "rot"};

@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: {
                    Intent i = new Intent(getApplicationContext(), Portrait.class);
                    startActivity(i);
                    break;
                }

Das ist mein Main Code. Wenn ich dort auf Portrait drücke sollte das Porträt Layout geöffnet werden und die ListView angezeigt werden. Leider stürzt die App dann ab.

Vielen Dank

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

30.03.2015, 17:40:23 via Website

Was ist denn der Fehler?
Es gibt ein Tool namens LogCat, dass dir die Fehler und Exceptions rot anzeigt. Eas steht denn da drin?

Hast du die 2. Activity auch richig in der Manifest.xml eingetragen?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 18

30.03.2015, 18:25:32 via Website

Hallo Pascal P.

Ehhm das ist meine erste App und ich habe erst die Basics durch.
Ich muss was in der Manifest.xml eintragen?(angel)

Vielen Dank

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

31.03.2015, 22:56:57 via App

Erstmal Systematisch an das Ganze rangehen und die Grundlagen lernen. Benutze zum Berispiel ein Buch oder ein gutes Tutorial aus dem Internet.
Da wird das meistens gut beschrieben.

um eine richtige Fehleranalyse zu machen mhsst du zuerstmal LogCat anzeigen. Dafür musst du (ja nach Entwicklungsumgebung) schauen wie du das Fenster aufrufst.

Welches Programm nutzt du denn?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 18

05.04.2015, 15:12:11 via Website

[[cite Pascal P.]]
um eine richtige Fehleranalyse zu machen mhsst du zuerstmal LogCat anzeigen. Dafür musst du (ja nach Entwicklungsumgebung) schauen wie du das Fenster aufrufst.

Welches Programm nutzt du denn?

Hallo Pascal

Ich benütze Android Studio. Ich habe natürlich in die LogCat geschaut. Wie du aber oben schon geschrieben hast, muss ich die 2te Activity in der Manifest.xml eintragen. So habe ich nach Hilfe im Internet gesucht. Jedoch fand ich nichts.

Wie kann ich eine 2te Activity in der Manifest.xml eintragen?
Resp. was muss ich dort reinschreiben?

Hier ist noch die LogCat:
--------- beginning of crash
Date... 1893-1893/com.example.asdf.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.nico.myapplication, PID: 1893
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.asdf.myapplication/com.example.asdf.myapplication.Portrait}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1761)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
at android.app.Activity.startActivityForResult(Activity.java:3736)
at android.app.Activity.startActivityForResult(Activity.java:3697)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
at android.app.Activity.startActivity(Activity.java:4007)
at android.app.Activity.startActivity(Activity.java:3975)
at com.example.asdf.myapplication.MainActivity$1.onItemClick(MainActivity.java:40)
at android.widget.AdapterView.performItemClick(AdapterView.java:300)
at android.widget.AbsListView.performItemClick(AbsListView.java:1143)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044)
at android.widget.AbsListView$3.run(AbsListView.java:3833)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

Vielen Dank für eure Hilfe
Lolipopkebab

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

05.04.2015, 15:39:15 via Website

Das sind ein paar Zeilen XML: http://stackoverflow.com/a/6253849

Aber eigentlich sollte das AS (Android Stundio) selber hinzufügen, wenn du auf new->Activity gehst.

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 18

05.04.2015, 17:21:48 via Website

Pascal P.

Das sind ein paar Zeilen XML: http://stackoverflow.com/a/6253849

Aber eigentlich sollte das AS (Android Stundio) selber hinzufügen, wenn du auf new->Activity gehst.

LG

Hahahha Vielen Dank habe ich nicht gewusst.
Zwar wird das Layout mit einer Textbox angezeigt. Jedoch kein Listview.
An was liegt das?

Hier ist der MainActivity Code:

package com.example.asdf.myapplication;

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", "asdf", "aaaa", "bbbb", "cccc"};

@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;
                }
                case 1: {
                    setContentView(R.layout.asdf);
                    break;
                }
                case 2: {
                    setContentView(R.layout.aaaa);
                    break;
                }
                case 3: {
                    setContentView(R.layout.bbbb);
                    break;
                }
                case 4: {
                    setContentView(R.layout.cccc);
                    break;
                }
            }
        }
    });
}

}

und hier sollte es beim Klick auf Activity gehen.
Code:

package com.example.asdf.myapplication;

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.ListView;

public class MainActivity2Activity extends ActionBarActivity {

public ListView lv3;
public String[] listentxt3 = {"aaaa", "bbbb", "cccc"};

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

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main_activity2, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.

    setContentView(R.layout.activity_main_activity2);

    lv3 = (ListView) findViewById(R.id.listView3);

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

                case 0: {
                    setContentView(R.layout.aaaa);
                    break;
                }
                case 1: {
                    setContentView(R.layout.bbbb);
                    break;
                }
                case 2: {
                    setContentView(R.layout.cccc);
                    break;
                }
            }
        }
    });



int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

Hier wird zwar jeder Button und alles angezeigt ausser die Listview die wird nicht angezeigt.

— geändert am 05.04.2015, 17:59:54

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

05.04.2015, 17:55:37 via Website

Kann gerade nich so genau nachverfolgen was du meinst.
Wie sieht denn dein XML Layout aus, bzw ein Screenshot der Activity.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 18

05.04.2015, 18:01:46 via Website

Hallo

Das 2te Layout sieht so aus:
image

Wenn ich die Listview lösche und einen Button reinziehe oder ein Textfeld wird dieses ohne Probleme angezeigt...

— geändert am 05.04.2015, 18:02:46

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

05.04.2015, 18:05:15 via Website

Na ja das kann auch ein Anzeigeproblem in AS sein.
Ich würde schauen wass angezeigt wird, wenn du die App auf deinem Device startest.

PS: Wie sieht das XML des Layouts auch, schätze da ist irgend ein Fehler,welcher verhindert dass AS das alyout richtig anzeigen kann.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 18

05.04.2015, 18:08:13 via Website

Die xml des Start layouts sieht so aus:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:background="#fffcfffa"
android:gravity="bottom|left|right|top">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentBottom="true" />

Das xml des 2ten Layouts sieht so aus:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.asdf.myapplication.MainActivity2Activity">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView3"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

Antworten

Empfohlene Artikel