2012-05-09 7 views
1

私はスピナーとOKボタンでカスタムダイアログを作成しました。私はこのスピナーにいくつかの項目を入れて、レイアウトを膨らませました。私がOKボタンをクリックするとダイアログが消えます。 私はclose customダイアログandroid

spinner.performCLick(); 

はスピナー選択した項目を取得するには、[OK]ボタンを押さずに、ダイアログを閉じるには、どのような方法があるあるスピナーを設定します。私は試しました

button.performclick(); 

しかし、使用しません。

+0

多分、カスタムダイアログのコードを投稿して、人々がそれを少しでも良く理解するのに役立ちます。また、スピナー項目を取得してダイアログを閉じるコード(OKのプレス以外にもいくつかのユーザーアクションがあると思います) – MikeIsrael

+0

ありがとうございました。申し訳ありませんが、私は非常に新しいです。私を無視してください – user1336442

+0

謝罪は必要ありません、私はあなたが答えを受け入れたことに気付きました。 – MikeIsrael

答えて

0

それはあなたを助けることが私のコード下記を参照してください。

package com.Test_dia; 

import android.app.Activity; 

import android.app.Dialog; 

import android.os.Bundle; 

import android.view.View; 

import android.view.View.OnClickListener; 

import android.widget.AdapterView; 

import android.widget.AdapterView.OnItemSelectedListener; 

import android.widget.ArrayAdapter; 

import android.widget.Button; 

import android.widget.Spinner; 

import android.widget.Toast; 

public class Test_diaActivity extends Activity { 

    private Button btn; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btn = (Button) findViewById(R.id.button1); 
     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       showalert(); 
      } 
     }); 
    } 

    protected void showalert() { 
     // TODO Auto-generated method stub 
     final Dialog dia = new Dialog(this); 
     dia.setContentView(R.layout.dia); 
     final String a[] = { "select one", "android", "java", "php" }; 

     Button btnok = (Button) dia.findViewById(R.id.button2); 
     Spinner spin = (Spinner) dia.findViewById(R.id.spinner1); 

     btnok.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       dia.dismiss(); 
      } 
     }); 

     spin.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, a)); 

     spin.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       // TODO Auto-generated method stub 
       if (arg2 > 0) { 
        Toast.makeText(Test_diaActivity.this, 
          "You Selected :" + a[arg2], Toast.LENGTH_SHORT) 
          .show(); 
        dia.dismiss(); 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 
     }); 

     dia.show(); 
    } 
} 

main.xml

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="click here" /> 

</LinearLayout> 

dia.xml

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="16dp" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/spinner1" 
    android:text="ok" /> 

このコードは完全に大丈夫です。

お楽しみに....

0

EDIT(前回非適した答えを削除)

私は、このように任意のせずに、スピナーの最初の項目を選択(あなたの問題がsetOnItemSelectedListenerを使用すると、起動時に「on​​ItemSelected」発射されていることと仮定するつもりですユーザーの入力)、その必要はありません。

その場合は、次のようにしてください。 setOnItemSelectedListenerに続いて

private int newSpinner = 0; 

はクラス変数を設定し

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
     } 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view,int pos, long id) { 
      if (newSpinner != 0) { 
       // Do your code thing here 
       dismiss(); 
      } else { 
       newSpinner++ 
      } 
     } 
    }); 
+0

いいえ動作していません。既にこのオプションを試しました – user1336442

+0

どうしてうまくいかないのですか? – Barak

+0

わかりません。しかし、クリックしたスピナーアイテムを検出する方法はありますか? – user1336442