4 Stimmen

Schlüsselcode Rückentaste in Android

In meiner Android-Anwendung habe ich drei Seiten A, B, C. Alle drei Seiten haben ein Tabellenlayout. Wenn eine Person auf eine bestimmte Zeile klickt, wird die Seite angezeigt, die damit verbunden ist. Jetzt benötige ich, dass wenn eine Person nach der zweiten Seite auf Zurück klickt, sich die Fokussierung auf die Zeile konzentriert, die sie in der ersten Seite angeklickt hat. Kann ich das in Android machen? Bitte antworten Sie mit Ihren wertvollen Vorschlägen.

Mein Code nachdem Totramon vorgeschlagen hat.

Hier in meinem Code generiere ich Zeilen dynamisch.

public void onClick(View v) {
    // TODO Auto-generated method stub
    flag=v.getId();
    if(v.getId()==1)
    {
        Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
        startActivity(i);

    }
    if(v.getId()==3)
    {
        Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
        startActivity(i);

    }
    if(v.getId()==5)
    {
        Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
        startActivity(i);
    }

    if(v.getId()==7)
    {
        Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
        startActivity(i);
    }

    if(v.getId()==100)
    {
        Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
        startActivity(i);
    }   

}

@Override
public void onFocusChange(View v, boolean hasFocus) {
    // TODO Auto-generated method stub

        if(hasFocus)
    {
        ((TableRow)v).setBackgroundColor(Color.rgb(255, 180, 40));
    }
    else
        {((TableRow)v).setBackgroundColor(Color.BLACK);}

}
    protected void onResume() { 
        super.onResume();
        tr[flag].requestFocus();
        tr[flag].setFocusableInTouchMode(true);
        if(tr[flag].hasFocus())
        {
            tr[flag].setBackgroundColor(Color.rgb(255, 180, 40));
        }
        else
            {tr[flag].setBackgroundColor(Color.BLACK);}
    }

     @Override   
     public void onPause() {      
    super.onPause();        

     }

Danke im Voraus :)

5voto

DeRagan Punkte 22442

Du kannst das versuchen

public boolean onKeyDown(int keyCode, KeyEvent event) 
{       
  if(keyCode==KeyEvent.KEYCODE_BACK)

          {
            //Dein Code hier
          }
    }

0voto

DonSteep Punkte 1065

Es gibt viele Möglichkeiten, dies zu tun. Ich nehme an, dass A, B, C und die Seite zum Starten (D) alle Aktivitäten sind. Sie könnten die Auswahl, beispielsweise in der Aktivität B, in einer Member-Variablen speichern, bevor Sie die Unteraktivität D starten (zum Beispiel in onPause()), und den Fokus wiederherstellen, wenn die Steuerung zu B's onResume() zurückkehrt. Oder Sie könnten den Parameter an D in den Extras des Intents übergeben oder den requestCode-Parameter an startActivityForResult() übergeben und denselben Wert von D durch einen Aufruf von setResult() zurückgeben, den Sie zu B's onActivityResult() erhalten.

onPause wird automatisch aufgerufen, wenn eine Aktivität angehalten wird, und ist oft der Ort, an dem Sie etwas speichern möchten, bevor Sie die Kontrolle abgeben. Dies geschieht, nachdem Sie Aktivität D gestartet haben, aber bevor sie in den Vordergrund gebracht wird. Sie müssen die Funktion nur in Ihrer Aktivität implementieren:

public void onPause() {
  // setze die Member-Variable auf irgend eine Weise
  super.onPause();
}

Es macht wahrscheinlich mehr Sinn, die angeklickte Zeile sofort im onClick- oder onItemSelected-Ereignis der Zeile zu speichern, oder wo auch immer Sie die Unteraktivität starten.

onResume wird ebenfalls automatisch aufgerufen, wenn Sie von der Unteraktivität zurückkehren, alles, was Sie tun müssen, ist sie zu implementieren.

public void onResume() {
  requestFocus(mSavedRow);
  super.onResume();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X