当前位置: 首页 > 知识库问答 >
问题:

如何在AlertDialog中单击CardView

施俊驰
2023-03-14

我正在尝试在AlertDialog中执行CardView的StartActivity,但它不起作用

我在网上找不到任何类似的东西,我也试过用一个按钮,我得到了同样的错误(见文章底部的LogCat)

以下是我的AlertDialog的布局:

<androidx.cardview.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="15dp"
    android:layout_marginEnd="15dp"
    app:cardBackgroundColor="@color/main_color_bg"
    app:cardCornerRadius="4.5dp"
    app:cardElevation="12dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <androidx.cardview.widget.CardView
            android:id="@+id/settings_support_btn"
            android:layout_width="match_parent"
            android:layout_height="65dp"
            android:layout_marginStart="15dp"
            android:layout_marginEnd="15dp"
            android:layout_marginTop="15dp"
            app:cardBackgroundColor="@color/content_background"
            app:cardCornerRadius="4.5dp"
            app:cardElevation="12dp">
        </androidx.cardview.widget.CardView>
        
    </LinearLayout>

</androidx.cardview.widget.CardView>

这是我的主菜

AlertDialog settingsDialog;

protected void onCreate(Bundle savedInstanceState) {
//Other code here...

  AlertDialog.Builder builder = new AlertDialog.Builder(this);

  View view = getLayoutInflater().inflate(R.layout.settings_dialog, null);
        CardView settingsSupportBtn = (CardView) findViewById(R.id.settings_support_btn);
        settingsSupportBtn.setOnClickListener(view1 -> {
            startActivity(new Intent(Main.this, SettingsSupport.class));
            settingsDialog.dismiss();
        });

        builder.setView(view);
        settingsDialog = builder.create();

        clickEvent();
}

public void clickEvent() {
  settingsBtn.setOnClickListener(view -> {
        settingsDialog.show();
 });

}

这是我的日志:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.package.test.android/com.package.test.android.Main}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.cardview.widget.CardView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
...
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.cardview.widget.CardView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

共有1个答案

暴乐邦
2023-03-14

换行

CardView settingsSupportBtn = (CardView) findViewById(R.id.settings_support_btn);

CardView settingsSupportBtn = (CardView) view.findViewById(R.id.settings_support_btn);
 类似资料:
  • 问题内容: 我有一个问题,如何向AllertDialog显示此数组item_detail? } 这是我的代码: } 问题答案: 我还有一个问题,如何使图片显示在内容区域而不是图标中。你能再帮我吗?所以这是您的完整代码: XML:(alert_background.xml) Java代码:

  • 问题内容: 我有一个AlertDialog dlgDetails从另一个显示AlertDialog dlgMenu。如果用户按下dlgDetails中的“后退”按钮,我希望能够再次显示dlgMenu,如果他在对话框外按下,则仅退出对话框。 我认为最好的方法是onBackPressed为dlgDetails覆盖,但是我不确定该怎么做,因为必须使用Builder间接创建AlertDialogs。 我正

  • 我一直在尝试点击网页上的图像。此映像的Xpath为: HTML代码为: 在这里尝试了以下所有方法,但得到了相同的错误消息“无法定位元素: > .findElement(.(“.//*[@id='GridView-1018']/table//tr[3]/td[7]/div/a/img”))。单击(); WebElement temp=driver.findElement(by.xpath(“//im

  • 问题内容: 我有以下几行: 在我的控制器中,我有: 如何在我的控制器ShowId函数中访问被单击元素的ID(在我的情况下为12345)? 请注意,绑定不在ng-repeat内,因此我可以访问项目ID或类似内容。 问题答案: 我解决了这个问题:

  • 请帮助如何使其工作

  • 所以我开始在我的应用程序中为不同的功能设置键,我想知道是否有一种方法可以设置鼠标左键或右键来执行某些操作?我在keycode.java中找不到任何鼠标事件,我不知道如何应用它。 下面是我的代码: 我要完成的是使右键点击你的鼠标按钮停止移动,左键点击再次开始。我该怎么做?谢谢你。