Android Single Choice 遇到的问题
来源:互联网 发布:js老虎机抽奖特效 编辑:程序博客网 时间:2024/09/21 09:26
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的序号