AlertDialog中View中的控件设置监听

 

之前给弹出的AlertDialog中的控件设置监听时,老是报空指针异常,之所以报空指针异常,是因为我findViewById写的有问题,因为我们需要给弹出框中的控件设置监听,直接用findViewById是找不到弹出框中的控件的,需要利用Dialog.findViewById或者利用你找到的弹出框中的View,然后view.findViewById;具体看下面代码 

package com.example.mydialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;

/**
 * @author zml2015
 * @date 2015-11-4 下午1:57:31
 * @version 1.0
 */
public class secondActivity extends Activity implements OnClickListener {
	Button btshow,bt_emial,bt_blog;
	ImageButton btcancel;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);


		setContentView(R.layout.second);

		final AlertDialog dialog=new AlertDialog.Builder(secondActivity.this).create();
		dialog.show();
		
dialog.getWindow().setContentView(R.layout.myxml);//重点看这获取弹出框内的视图view

		// btshow=(Button) findViewById(R.id.bt_show);
btcancel = (ImageButton) dialog</span>.findViewById(R.id.bt_cancel);//重点看这行的Dialog
		bt_blog=(Button) dialog.findViewById(R.id.bt_blog);
		bt_emial=(Button) dialog.findViewById(R.id.bt_email);
		 bt_blog.setOnClickListener(this); 
		 bt_emial.setOnClickListener(this);
		btcancel.setOnClickListener(new OnClickListener() {
			
		@Override
		public void onClick(View arg0) {
			dialog.dismiss();
			Toast.makeText(secondActivity.this, "clicked", 0).show();
			Log.e("log", "click");
		}
		 });
		
	}

	@Override
	public void onClick(View arg0) {

		
		switch (arg0.getId()) {
		case R.id.bt_blog:
			Uri uri = Uri.parse("http://blog.csdn.net/zml_2015");    
		    Intent it = new Intent(Intent.ACTION_VIEW, uri);    
		    startActivity(it);  
			break;
		case R.id.bt_email:
			Uri uri1 = Uri.parse("http://blog.csdn.net/zml_2015");    
		    Intent it1 = new Intent(Intent.ACTION_VIEW, uri1);    
		    startActivity(it1);  
			break;
		default:
			break;
		}
	}

}

 

 
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,可以按照以下步骤进行: 1. 在布局文件添加一个 Button 和一个 TextView。 2. 在 Activity 找到这两个控件,并为 Button 设置一个点击事件监听器。 3. 在点击事件监听创建一个 AlertDialog 对话框。 4. 将对话框设置为单选列表模式,并为列表添加选项。 5. 为列表的每个选项设置一个点击事件监听器,在监听获取选项的文本内容,并将其设置为 TextView 的文本。 以下是示例代码: ```java public class MainActivity extends AppCompatActivity { private Button mButton; private TextView mTextView; private String[] mOptions = {"选项1", "选项2", "选项3"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = findViewById(R.id.button); mTextView = findViewById(R.id.textView); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("请选择一个选项"); builder.setSingleChoiceItems(mOptions, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { String selectedOption = mOptions[i]; mTextView.setText(selectedOption); dialogInterface.dismiss(); } }); builder.create().show(); } }); } } ``` 这个示例代码,我们在点击 Button 时创建了一个 AlertDialog 对话框,该对话框包含一个单选列表,列表包含了三个选项。当用户点击列表的某个选项时,我们获取该选项的文本内容,并将其设置为 TextView 的文本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值