2012-05-09 3 views
1

Я создал пользовательский диалог с прядильником и кнопкой OK. Я заполнил этот счетчик некоторыми элементами и раздул макет. Если я нажму OK, диалог диалога будет отклонен. Я установил счетчикclose custom Dialog android

spinner.performCLick(); 

есть, есть ли способ, чтобы получить спиннер выбранного элемента и закрыть диалоговое окно без нажатия кнопки OK. Я пробовал

button.performclick(); 

но не использовался.

+0

Возможно, разместите код для пользовательского диалога и помогите людям понять его немного лучше. Также код, в котором вы хотите получить элемент spinner и закрыть диалоговое окно (я предполагаю, что это на некоторых других действиях пользователя, кроме 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 стреляет «onItemSelected» при запуске (таким образом, выбирая первый элемент в блесны без каких-либо пользовательский ввод), и вы этого не хотите.

Если это так, попробуйте следующее.

Установить переменный класс:

private int newSpinner = 0; 

Тогда в setOnItemSelectedListener:

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