我正在尝试实施一个共享操作,根据用户的选择,他会获得一个包含特定共享操作的弹出对话框(通过特定的不同应用程序 - 所需的屏幕: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,所以我尝试制作一个自定义的。 此外,我想知道这是一个好习惯,还是我应该为此实现一个新的意图。
先谢谢。
答案 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);