带有多个图像按钮的android自定义对话框

时间:2017-01-20 14:19:12

标签: android android-intent dialog alertdialog imagebutton

我正在尝试实施一个共享操作,根据用户的选择,他会获得一个包含特定共享操作的弹出对话框(通过特定的不同应用程序 - 所需的屏幕:desired layout)。

我想要6个ImageButtons。

直到现在,我可以获得弹出窗口(但onclick监听 - 就像死了)或(另一方面)应用程序会崩溃。

弹出窗口的布局是:

<RelativeLayout 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:background="@color/colorAccent">


    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/viber"
        android:id="@+id/viber_share_button"
        android:layout_below="@+id/twitter_share_button"
        android:background="@color/colorAccent"
        android:layout_alignEnd="@+id/twitter_share_button"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_toEndOf="@+id/facebook_share_button" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/twitter"
        android:id="@+id/twitter_share_button"
        android:background="@color/colorAccent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"/>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/facebook_messenger"
        android:id="@+id/messanger_share_button"
        android:background="@color/colorAccent"
        android:layout_marginLeft="10dp"
        android:layout_alignTop="@+id/viber_share_button"
        android:layout_alignEnd="@+id/facebook_share_button" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/instagram"
        android:id="@+id/instagram_share_button"
        android:background="@color/colorAccent"
        android:layout_marginLeft="10dp"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@+id/twitter_share_button"
        android:layout_marginStart="31dp"
        android:layout_marginTop="10dp"/>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/whatsapp"
        android:id="@+id/whatsapp_share_button"
        android:background="@color/colorAccent"
        android:layout_alignTop="@+id/viber_share_button"
        android:layout_alignEnd="@+id/instagram_share_button"
        android:layout_toEndOf="@+id/viber_share_button"
        android:layout_alignStart="@+id/instagram_share_button" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/facebook"
        android:id="@+id/facebook_share_button"
        android:background="@color/colorAccent"
        android:layout_marginLeft="10dp"
        android:layout_alignParentTop="true"
        android:layout_toStartOf="@+id/twitter_share_button"
        android:layout_marginEnd="39dp"
        android:layout_marginTop="10dp"/>
</RelativeLayout>

我使用的代码是:

private void displayIntentOptions(final Bitmap bitmap){



        LayoutInflater layoutInflater = LayoutInflater.from(this);
        View promptView = layoutInflater.inflate(R.layout.share_buttons, null);
        final AlertDialog alertD = new AlertDialog.Builder(this).create();
        alertD.setView(promptView);
        alertD.show();
        ImageButton facebook_button = (ImageButton)findViewById(R.id.facebook_share_button);
        ImageButton twitter_button = (ImageButton)findViewById(R.id.twitter_share_button);
        ImageButton intagram_button = (ImageButton)findViewById(R.id.instagram_share_button);
        ImageButton messanger_button = (ImageButton)findViewById(R.id.messanger_share_button);
        ImageButton viber_button = (ImageButton)findViewById(R.id.viber_share_button);
        ImageButton whatsapp_button = (ImageButton)findViewById(R.id.whatsapp_share_button);

        facebook_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        twitter_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                shareTwitter(v, bitmap);//just a sample of what I want to do
            }
        });
        intagram_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        messanger_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        viber_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        whatsapp_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
    }

此代码根本不起作用。我会很感激,如果有人可以帮助我。因为在常规对话框中我不能拥有所有那些ImageButtons,所以我尝试制作一个自定义的。 此外,我想知道这是一个好习惯,还是我应该为此实现一个新的意图。

先谢谢。

1 个答案:

答案 0 :(得分:0)

你需要改变一件小事

当时

final AlertDialog alertD = new AlertDialog.Builder(this).create();
alertD.setView(promptView);
alertD.show();

现在

  final AlertDialog.Builder alertD = new AlertDialog.Builder(this);
  alertD.setView(promptView);
  alertD.show();

更新

还存在问题
ImageButton facebook_button = (ImageButton)findViewById(R.id.facebook_share_button);

它将为null,因为您查看了Activity(或片段)视图,但没有查看AlertDialog视图。你需要像这样设置它

ImageButton facebook_button = (ImageButton)promptView.findViewById(R.id.facebook_share_button);