1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

KeyListener Return

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Viktor R, 28.12.2011.

  1. Viktor R, 28.12.2011 #1
    Viktor R

    Viktor R Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    24.12.2011
    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);
        }
        
    }
    
     
  2. swordi, 28.12.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    du musst auch noch den status abfragen.

    event.getstatus == keyevent.keydown

    oder sowas in der art.
     
  3. Viktor R, 30.12.2011 #3
    Viktor R

    Viktor R Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    24.12.2011
    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
     

Diese Seite empfehlen