spinner.performClick();

  • 10 Antworten
  • Letztes Antwortdatum
N

note3

Ambitioniertes Mitglied
0
Hallo zusammen,

innerhalb eines Dialoges
final Dialog dialog = new Dialog(this);
habe ich einen Spinner, der geöffnet angezeigt werden soll.

Mit
spinner.performClick();
ist der Spinner zwar geöffnet, er steht aber außerhalb des Dialoges und nicht dort, wo er stehen soll. Im Dialogfeld selbst sieht man den nicht geöffneten Spinner.

Gruß
E.S.
 
Kannst du eventuell mal ein Bild posten, damit man sich das besser vorstellen kann? Außerdem wäre ein wenig Code sehr hilfreich.
 
Oben im Bild sieht man den geöffneten Spinner, der außerdem keinen Focus hat.

Code:
public void doButtonInsert() 
    {   final Dialog dialog = new Dialog(this);
        dialog.requestWindowFeature(dialog.getWindow().FEATURE_NO_TITLE); 
        dialog.setContentView(R.layout.dialog_insert);
        
        WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
 
 
        Spinner spin1 = (Spinner)dialog.findViewById(R.id.spinner1);
        ArrayAdapter<String> adp=new ArrayAdapter<String>(this, R.layout.spinner_text, nrList);
        adp.setDropDownViewResource(R.layout.spinner_text);
        spin1.setAdapter(adp);
        
        Button ok = (Button) dialog.findViewById(R.id.ok);
        
        dialog.show();
        spin1.performClick();

        ok.setOnClickListener
        (  new OnClickListener() 
           {   @Override
               public void onClick(View v) 
               {  ...
              dialog.dismiss();
               }
           }
        );
        spin1.setOnItemSelectedListener
          (   new OnItemSelectedListener() 
              {   public void onNothingSelected(AdapterView<?> arg0) {}
                  public void onItemSelected(AdapterView<?> arg0, View view, int pos, long id) 
                  { nrline=pos+1; 
                  }    
              }
          );
    }
 

Anhänge

  • 2013-11-28-16-27-43.png
    2013-11-28-16-27-43.png
    131,1 KB · Aufrufe: 298
Zuletzt bearbeitet:
Hmm, sehr merkwürdig. Wie sieht deine Layout spinner_text aus?
In jedem Fall ist die Zeile
adp.setDropDownViewResource(R.layout.spinner_text);
überflüssig, auch wenn es daran nicht liegen wird.
 
  • Danke
Reaktionen: note3
RobNeck schrieb:
In jedem Fall ist die Zeile
adp.setDropDownViewResource(R.layout.spinner_text);
überflüssig, auch wenn es daran nicht liegen wird.
Ja, die Zeile ist so überflüssig wie ein Kropf.
Aber das Verhalten hat sich danach nicht geändert.
 
RobNeck schrieb:
Hmm, sehr merkwürdig. Wie sieht deine Layout spinner_text aus? ...
Eigentlich völlig harmlos
Code:
<?xml version="1.0" encoding="utf-8"?>
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:textSize="18sp"
 />
 
ein geöffneter spinner wäre ja dann doch eine listview. warum versuchst es nicht damit ??
 
Schick mal bitte das Layout von deinem Dialog fenster.
 
Problem endlich gelöst, man muss wohl eine Pause einbauen.
Code:
        final Handler h;
        h = new Handler();
        new Thread(new Runnable() {
            public void run() {
                 h.postDelayed(new Runnable() {
                    public void run() {
                        spinner.performClick();
                    }
                }, 50);
            }
        }).start();
 
swordi schrieb:
ein geöffneter spinner wäre ja dann doch eine listview. warum versuchst es nicht damit ??
Weil es mich nervt, wenn etwas nicht so geht, wie ich es will :)

Spaß beiseite, ein listView klappt ja nicht zu.
 
note3 schrieb:
Problem endlich gelöst, man muss wohl eine Pause einbauen.
Code:
        final Handler h;
        h = new Handler();
        new Thread(new Runnable() {
            public void run() {
                 h.postDelayed(new Runnable() {
                    public void run() {
                        spinner.performClick();
                    }
                }, 50);
            }
        }).start();

Schön wenn es klappt, aber das ist ja eigentlich auch nur eine quick and dirty Lösung. Normalerweise braucht man keine Pause, um einen Spinner aufklappen zu lassen. Sehr merkwürdig...
 
Zurück
Oben Unten