Android listview verschwindet nach Bildschirm-rotation

Auf meinem layout habe ich einige Tasten tho einige Entscheidungen treffen, und dann eine Taste, um eine Abfrage an eine Datenbank. Das Ergebnis dieser Abfrage wird in einem ListView in diesem layout.

Das problem ist, wenn ich nach ausführen der Abfrage, die ich drehen Sie den Bildschirm, die ListView verschwindet, und führen Sie die Abfrage erneut aus.

Ich glaube, dass dies geschieht, weil die Aktivität neu gestartet. Nach den Vorschlägen hier habe ich Hinzugefügt, um meine Aktivität in der manifest - android:configChanges="orientation|keyboardHidden" und in meinen code eingefügt:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      setContentView(R.layout.mylayout);

    }

Aber das wird nicht funktionieren.

Hier der komplette code meiner Tätigkeit:

public class MyClass extends ListActivity implements OnClickListener, OnCheckedChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayout);

        //Creates the buttons and setOnClickListener and setOnCheckedChangeListener
    }

    @Override
    public void onClick(View v) {

        //Manages the buttons and their functions

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        //See what group in radio group is checked
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        //After pressing one button, a query is made and a listview is shown. 
        //This it to handle the user choice after he clicks an item on the listview

    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      setContentView(R.layout.mylayout);

    }
}

Dies ist seltsam, denn ich habe einige andere Aktivität wie diese:

public class AtoZ extends ListActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.atoz);



    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        //TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);

    }

}   

Diese auch führt eine Abfrage an die Datenbank, zeigt es auf einem ListView und kümmert sich dann um die Auswahl des Nutzers. Wenn ich durch drehen des Bildschirms, ListView noch zeigt.

Was kann ich tun?

  • Warum stellst du das layout R. layout.Nährstoff im onConfigurationChanged-Methode (anstelle von R. layout.mylayout wie in der onCreate-Methode)?
  • Habe vergessen, das zu ändern. Korrigiert
  • Wie setzen Sie die Daten in die ListView? Binden Sie es an den DB-cursor?
  • ja. Cursor query = baseDados.getData(1,0,null); MyAdapt cursorAdapter = new MyAdapt(this, query,0); listContent.setAdapter(cursorAdapter); Auf MyAdapt Ansicht ist die Bindung an den Mauszeiger
  • entfernen onConfigurationchange Methode, wenn Sie nicht zu ändern das layout. es genügt zu schreiben, in manifiest-Datei.
  • Entfernt und nach Drehung des Bildschirms, listview verschwindet

InformationsquelleAutor Favolas | 2012-08-29
Schreibe einen Kommentar