Focus wechseln auf zweites EditView

  • 11 Antworten
  • Letztes Antwortdatum
BadDay

BadDay

Neues Mitglied
0
Hallo zusammen,

Kann mir jemand vielleicht weiterhelfen?

Folgender Knackpunk:

Ich will nicht, dass die virtuelle Tastatur kommt beim zweiten EditView.
Ich hoffe die Information reicht, und ich kenne Google, und auch viele andere die Hilfe suchen im Internet, und bei den Foren.

Gruss BadDay

Code:
public class MainActivity extends Activity {
    
    public String str ="";
     int i,num,numtemp;
        EditText showResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        showResult = (EditText)findViewById(R.id.result_id);
        //showResult = (EditText)findViewById(R.id.result_id2);    
    }
    
    public void btn1Clicked(View v){
       insert(1); 
    }  
    public void btn2Clicked(View v){
     insert(2);  
    }

    private void insert(int j) {
           str = str+Integer.toString(j);
           num = Integer.valueOf(str).intValue();
           showResult.setText(str); 
       }    
    }
Code:
<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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/result_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:hint = "Anzahl"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/Btn2_id"
        android:layout_width="70dp"
        android:layout_height="60dp"
        android:layout_alignBaseline="@+id/Btn1_id"
        android:layout_alignBottom="@+id/Btn1_id"
        android:layout_toRightOf="@+id/Btn1_id"
        android:onClick="btn2Clicked"
        android:text="2" />

    <EditText
        android:id="@+id/result_id2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/result_id"
        android:ems="10"
        android:inputType="number" />

    <Button
        android:id="@+id/Btn1_id"
        android:layout_width="70dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/result_id2"
        android:onClick="btn1Clicked"
        android:text="1" />

</RelativeLayout>
 
Zuletzt bearbeitet:
Ich verstehe noch nicht genau, was du willst. Wenn du es nochmal erklärst kann ich bestimmt helfen :)
 
Zur genaueren Erklärung:

Ich habe zwei EditView Felder mit fixen Button, also nicht die virtuelle Tastatur vom Handy, dies klappt auch gut ins erste Feld. Tippe ich jetzt ins zweite Editfeld erscheint die virtuelle Tastatur, was logisch ist aber nicht erwünscht ist. Auch hier sollte die Eingabe mit den Button erscheinen, am Schluss wenn dies klappt wird gerechnet. Wert Feld 1 + Wert Feld 2. So ich hoffe es ist genug verständlich erklärt. :winki:

Hatte nicht mehr Zeit das Abendessen wartete :drool:

Gruss BadDay

6qg4cvwi_jpg.htm


6qg4cvwi_jpg.htm
 
Zuletzt bearbeitet:
Hmm, also willst du erstmal einfach unterdrücken, dass sich die virtuelle Tastatur öffnet? Das sollte so funktionieren (nicht getestet):
Code:
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(editText.getWindowToken(), 0);

Sry, verstehe noch nicht genau, worauf du mit dieser App hinaus willst, wenn du das sagt, fällt es mir leichter dein Vorhaben zu verstehen :D
 
Nein ich will die virtuelle Tastatur nicht unterdrücken sondern das die Button im zweiten EditView Feld funktionieren, sobald der Focus auf dieses Feld gesetzt wird. Bei dem ersten EditView Feld kommt sie auch nicht.
 
Achso, soll also der Button vom zweiten EditView deaktiviert sein, solange in dem dazugehörigen EditView kein Focus ist? Oder wie?
 
Nein für das probieren habe ich nur 2 Button gemacht und 2 EditView, erst wenn alles richtig läuft wird fertiggemacht.

Sollte ein Logistik-Rechner werden, will einfach keine virtuelle Tastatur, mit x Tasten sondern nur 1 bis 9 und die 0 natürlich.
 
Warum so kompliziert?
Du kannst dem editText doch sagen
android:digits="0123456789"
android:inputType="phone"

dann bekommst du ein softkeyboard wo man nur ziffern eingeben kann.
Halte ich für den deutlich besseren weg. Leute zu bevormunden welche eingabe sie verwenden wollen sehe ich No-Go an ;)
Jeder hat seine vorlieben (vielleicht sogar eine Bluetooth/USB Tastatur), wenn du da jetzt was eigenes baust kann derjenige seine lieblingseingabe methode nicht mehr nutzen.
 
Dies funktioniert leider nicht, ich bekomme auf meinem Motorola Handy, leider alle Zeichen € $ 4 5 6 * / dies ist die zweite Zeile, von insgesamt 4, also zu viele, und gebraucht wird es immer ohne Zusatz Tastatur, Mobil klein und handlich. Zudem sollte es auch für grosse Patsch Hände tauglich sein. Baue ich die Tastatur selber, kann ich die Tasten einfärben und gradient verwenden. Auch sollten die Tasten gerundet sein an den Ecken.

Hier ein Beispiel der EditView mit gerundeten Ecken:

drawable/rounded_edt.xml

Code:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/edittext_shape" >

    <!-- <solid android:color="#ffffff" /> -->

    <gradient
        android:angle="90"
        android:centerColor="#555994"
        android:endColor="#b5b6d2"
        android:startColor="#555994"
        android:type="linear" />
    <corners
        android:bottomLeftRadius="6dp"
        android:bottomRightRadius="6dp"
        android:topLeftRadius="6dp"
        android:topRightRadius="6dp" />
    <padding
        android:left="7dp"
        android:right="7dp"
        android:bottom="5dp"
        android:top="5dp" />
</shape>
 
Ist das ein internens Firmenprojekt?
Oder soll das eine Anwendung für externe (also einen unbestimmten kreis sein)
und welchen Einfluß hast du auf die Telefone auf denen das läuft.

Im zweifel kannst du dann auch ne eigene Tastatur entwickeln.

Ansonsten würde ich aber auch einfach die virtuelle Tastatur unterrücken und mir evtl merken welches editfeld als letztes den Fokus hatte und bei jedem button click das richtige EditText befüllen.
 
Es geht in die Richtung, das es ein Geräte unabhängiges App werden soll, ohne an eine Firma gebunden zu sein. Es ist eine Hilfe für Rechenschwache Personen. Und in der Tat mit einem EditView Feld geht es ja mit der Tastatur, nur eben wenn ich zwei EditView habe stehe ich auf dem schlauch.

Dies hier ist die Rechenoperation

result = num1 / num2;
resultint = (int) (result);
resultrest = (int) (num1 - (resultint * num2));

mehr kann ich nicht verraten, und ich bin Hobbyprogrammierer :sad:

Also null Profit, aber ein wenig Hirntraining.
 
Also ich hab mir nochmal dein Quellcode nochmal genau angeguckt.
Ehrlich gesagt verstehe ich da nicht wirklich was du machst.

Du musst halt in deinen onClick Methoden unterscheiden welches EditText aktuell den Focus hat. und dann die entsprechenden Button Befehle dahin schreiben.

Die Berechnung ist ja erst mal uninteressant, wenn es dir um die Eingabe geht.
Entweder prüfst du alle Felder ab ob sie den Focus haben wenn du auf den button drückst (Wobei der Button dann den Fokus haben müsste)
Oder du merkst dir sobald eines der Felder den Focus bekommen hat dieses.


Den rest kannst du übrigens mit modulo berechnen % ( 3%2 ergibt 1)

Ansonsten seh ich in deinem Code nicht mal den Versuch von dem was du beschreibst.
du füllst aktuell ja immer das gleiche Feld.
showResult.setText(str);
da musst du ansetzen und showResult durch eine variable ersetzen die du veränderst wenn eines der Felder den Fokus erhält.
 
Zurück
Oben Unten