package com.android.ex; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface; import android.os.Bundle; import android.widget.*; import android.view.View; import android.text.*; public class LoginTestActivity extends Activity { private EditText edittext1; private EditText edittext2; private Button button1; private Button button2; private TextView textview2; final String items[]={"item0","item1","item2","item3","item4"}; int id; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edittext1=(EditText)findViewById(R.id.edittext1); edittext2=(EditText)findViewById(R.id.edittext2); button1=(Button)findViewById(R.id.button1); button2=(Button)findViewById(R.id.button2); textview2=(TextView)findViewById(R.id.textview2); button1.setOnClickListener(cl1); button2.setOnClickListener(cl2); } private Button.OnClickListener cl2=new Button.OnClickListener(){ public void onClick(View v){ createDialog3(); } }; private Button.OnClickListener cl1=new Button.OnClickListener(){ public void onClick(View v){ edittext1.setText(null); edittext2.setText(null); } }; protected void createDialog3(){ //Single Choice AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("Single Choice"); builder.setSingleChoiceItems(items,0,new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog,int which){ id=which; //选中第which个item } }); builder.setPositiveButton("OK",new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog,int which){ if(id>=0){ textview2.setText(items[id]); //将选中的第which个item显示在textview2中 } } }); builder.setNegativeButton("Cancel",new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog,int which){ dialog.dismiss(); } }); builder.create().show(); } private void showDialog(String str){ new AlertDialog.Builder(this).setMessage(str).show(); } }
问题: 1、如无id变量,items值不会传到textview2中 2、OK按键中,textview2.setText(items[id])必须为id,不能为which,否则无法传递item值
解决:
1、public void onClick方法中,which为形参,故需要一个变量来传递值
2、AlertDialog关闭后,变量消失,故需要一个变量保存选中items的序号
Android Single Choice 遇到的问题
最新推荐文章于 2024-09-18 11:19:13 发布