KeyListener Return

  • 2 Antworten
  • Neuester Beitrag
Diskutiere KeyListener Return im Android App Entwicklung im Bereich Betriebssysteme & Apps.
V

Viktor R

Neues Mitglied
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);
    }
    
}
 
S

swordi

Enthusiast
du musst auch noch den status abfragen.

event.getstatus == keyevent.keydown

oder sowas in der art.
 
V

Viktor R

Neues Mitglied
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