首先单选布局有问题,其次点击上面的部分对话框消失弹出吐司,点击下方部分无反应

首先单选布局有问题,其次点击上面的部分对话框消失弹出吐司,点击下方部分无反应

http://img1.sycdn.imooc.com//climg/5ca410e70001ab6710802160.jpg

private void showSingleDialog() {
    //****************
    LayoutInflater factory= LayoutInflater.from(this);
    final View view=factory.inflate(R.layout.single_dialog,null);

    final String[] items = {"男","女","性别未知","你猜"};
    AlertDialog.Builder builder = new AlertDialog.Builder(this)
            .setTitle("")
            .setSingleChoiceItems(items,0,new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"您选择了:"+items[which],Toast.LENGTH_SHORT).show();
                    dialog.dismiss();
                }
            });
    builder.setView(view);
    builder.show();
}

//布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:src="@mipmap/ic_launcher" />

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:paddingLeft="30dp"
            android:text="请选择一下性别吧"
            android:textSize="25sp" />
    </LinearLayout>

    <RadioGroup
        android:id="@+id/rg_gender"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <RadioButton
            android:id="@+id/rb_male"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:textSize="20sp"
            android:layout_margin="10dp"/>
        <RadioButton
            android:id="@+id/rb_female"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textSize="20sp"
            android:layout_margin="10dp"/>
        <RadioButton
            android:id="@+id/rb_unknown"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别未知"
            android:textSize="20sp"
            android:layout_margin="10dp"/>
        <RadioButton
            android:id="@+id/rb_guess"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="你猜"
            android:textSize="20sp"
            android:layout_margin="10dp"/>
    </RadioGroup>

</LinearLayout>


正在回答

登陆购买课程后可参与讨论,去登陆

4回答

你把第4行代码去掉就行了。只有需要在自定义对话框布局时才需要写xml呢。你的xml也没用。这是两种方式。你同时用了两种。选择一种即可。祝:学习愉快

  • LexieMIZUKI 提问者 #1
    但是我想保留自定义的那个布局,应该删掉哪个代码呢
    2019-04-03 10:43:35
  • 好帮手慕雪 回复 提问者 LexieMIZUKI #2
    那改动就大了,你手写的代码都不要了。你需要自定义类,类引用这个xml,并且为按钮添加监听。请参见3-1 5分之后的内容。
    2019-04-03 10:49:18
  • LexieMIZUKI 提问者 回复 好帮手慕雪 #3
    我之前就是自定义,结果一点击就闪退,于是我就用了这个办法,唉。可以帮我看看上面的那个自定义是出了什么问题吗,谢谢啦。
    2019-04-03 11:13:38
提问者 LexieMIZUKI 2019-04-06 10:47:14
  • 你看我第四个红框处,上面一行的注释。把那些都注掉。监听在SingleDialog类中进行。
    2019-04-08 10:00:24
  • 提问者 LexieMIZUKI 回复 好帮手慕雪 #2
    嗯嗯,可以运行了,谢谢!为什么那些不注释掉就会闪退呢?
    2019-04-09 09:09:52
  • 好帮手慕雪 回复 提问者 LexieMIZUKI #3
    因为会死循环。
    2019-04-09 09:59:35
好帮手慕雪 2019-04-03 16:32:58

在自定义的对话框中直接监听事件。你把监听器放哪里了

http://img1.sycdn.imooc.com//climg/5ca46f32000152a410240675.jpg

可以看出,你对此课理解太混乱了,多种方式,混合使用。建议慢慢学习,不要急于求成。正常的你要付出1:3到1:5的时间来学习,就是说1小时的视频你可能要用3到5个小时来理解,掌握,消化。祝:学习愉快

  • 提问者 LexieMIZUKI #1
    我的监听器在第47行呀
    2019-04-04 09:06:28
  • 好帮手慕雪 回复 提问者 LexieMIZUKI #2
    对呀,就是更改你47行的内容。第一行到第二十三行的代码就不要了。你监听重复了,并且放的地方也不对。
    2019-04-04 09:46:10
  • 提问者 LexieMIZUKI 回复 好帮手慕雪 #3
    我把那些注释掉了,那监听应该放在哪里呢?谢谢你了
    2019-04-06 10:40:01
提问者 LexieMIZUKI 2019-04-03 11:12:22
class ButtonListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.radio:
                 showSingleDialog();
                SingleDialog singleDialog = new SingleDialog(MainActivity.this, R.style.myDialog);
                singleDialog.show();
                if(rb_female.isChecked())
                    Toast.makeText(MainActivity.this, "您选择了:女性。", Toast.LENGTH_SHORT).show();
                if(rb_male.isChecked())
                    Toast.makeText(MainActivity.this, "您选择了:男性。", Toast.LENGTH_SHORT).show();
                if(rb_unknown.isChecked())
                    Toast.makeText(MainActivity.this, "您选择了:性别未知!", Toast.LENGTH_SHORT).show();
                if(rb_guess.isChecked())
                    Toast.makeText(MainActivity.this, "您选择了:你猜!。", Toast.LENGTH_SHORT).show();
                break;
                
 //自定义类代码
import android.app.Dialog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class SingleDialog extends Dialog{
    private RadioGroup rg_gender;
    private RadioButton rb_male,rb_female,rb_unknown,rb_guess;

    public SingleDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
        setContentView(R.layout.single_dialog);

        rg_gender = findViewById(R.id.rg_gender);
        rb_male = findViewById(R.id.rb_male);
        rb_female = findViewById(R.id.rb_female);
        rb_unknown = findViewById(R.id.rb_unknown);
        rb_guess = findViewById(R.id.rb_guess);

        rg_gender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.rb_male:
                        rb_male.isChecked();
                        break;
                    case R.id.rb_guess:
                        rb_guess.isChecked();
                        break;
                    case R.id.rb_unknown:
                        rb_unknown.isChecked();
                        break;
                    case R.id.rb_female:
                        rb_female.isChecked();
                        break;
                }
            }

        });
    }
}


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师