1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. Viktor R, 28.12.2011 #1
    Viktor R

    Viktor R Threadstarter Neuer Benutzer

    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

    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

    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