KeyListener Return

V

Viktor R

Neues Mitglied
0
Hallo zusammen,

ich bastel gerade an einer Activity, in die der User etwas eintragen soll. Der Text soll entweder mit
a) Button "weiterer Artikel"
b) Button "Fertig"
oder
c) SoftKey "Enter"
in einer ArrayList geschrieben werden und in einer anderen Activity als ListView ausgegegeben werden. Variante a) und b) klappen perfekt,
sobald ich aber "Enter" der Tastatur drücke, wird der Text in die ArrayList geschrieben und das ganze nochmal aufgerufen. Die DVM verhält sich so, als hätte ich doppelt geklickt.
Ich kann mit das Verhalten nicht erklären.

Code:
public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.einkauf_zetttel_anlegen);
        
        complete=(AutoCompleteTextView)findViewById(R.id.complete);
        weiterer_Artikel=(Button)findViewById(R.id.weiterer_Artikel);
        fertig=(Button)findViewById(R.id.einkaufszettel_fertig);
        
        res=getResources();
        String [] bez=res.getStringArray(R.array.Artikel_Komplett);
        
        ArrayAdapter<String> ad=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, bez );
        complete.setAdapter(ad);
        //complete.setInputType(0);        
        
        fertig.setClickable(true);
        fertig.setPressed(false);
        
        weiterer_Artikel.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sammleEintrag();
                }
        });
        complete.setOnKeyListener(new View.OnKeyListener() {    
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if(event.getKeyCode()==66){
                    sammleEintrag();
                }
                
                return false;
            }
        });
        fertig.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                text=complete.getText().toString();
                Artikel.add(text);
                int a=Artikel.size();
                String []ar =new String[a];
                Artikel.toArray(ar);
                Toast.makeText(EinkaufzettelAnlegen.this, " Text: "+ar.length, Toast.LENGTH_LONG).show();
                
                Intent in=new Intent();
                in.setClass(EinkaufzettelAnlegen.this, Einkaufszettel_anzeigen.class);
                in.putExtra("array",ar);
                startActivity(in);
            }
        });
        
        
    }
    public void sammleEintrag(){
        text=complete.getText().toString();
        Artikel.add(text);
        Toast.makeText(EinkaufzettelAnlegen.this, "ID: "+i+" Text: "+text, Toast.LENGTH_LONG).show();
        i++;
        complete.setText(" ");
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(complete.getWindowToken(), 0);
    }
    
}
 
du musst auch noch den status abfragen.

event.getstatus == keyevent.keydown

oder sowas in der art.
 
Hallo sordi,

danke, das war mein Fehler gewesen. Der "Return" Button empfing immer zwei Aktionen
er wurde gedrückt
er wurde losgelassen

dadurch der doppelte Eintrag.

gruß

Viktor
 

Ähnliche Themen

kukuk
Antworten
9
Aufrufe
1.179
kukuk
kukuk
L
Antworten
2
Aufrufe
742
lg-89
L
T
Antworten
2
Aufrufe
1.375
Seilbahn
S
Zurück
Oben Unten