我正在尝试通过XML在我的图书馆计划中创建一个自定义对话框。
这是XML文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/tenlogix" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="25dp" >
<Button
android:id="@+id/likeitb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/likeitd" />
<Button
android:id="@+id/dontlikeitb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dontliked" />
<Button
android:id="@+id/notnowb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/notnowd" />
</LinearLayout>
</RelativeLayout>
在Simple Java Class中,我正在创建Dialog,如下所示:
final Dialog feed_back_dialog = new Dialog(mAct);
feed_back_dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
feed_back_dialog.setCancelable(true);
feed_back_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
feed_back_dialog.setContentView(R.layout.ratedialog);
Button LikeIt = (Button) mAct.findViewById(R.id.likeitb);
Button DontLikeIt = (Button) mAct.findViewById(R.id.dontlikeitb);
Button NotNow = (Button) mAct.findViewById(R.id.notnowb);
LikeIt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "market://details?id="+mAct.getPackageName();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
mAct.startActivity(i);
mAct.finish();
}
});
如果我没有设置LikeIt
按钮的单击侦听器,则会显示该对话框,但是当我尝试在其上设置单击侦听器时。它给了我一个空指针异常。
我无法找到解决方案。当我尝试访问它时,LikeIt
按钮为空。
我没有任何相同的名称资源。请帮忙。
引用mAct
是正在使用库项目的另一个项目的活动。
期待积极快速的回应。
感谢。
答案 0 :(得分:1)
更改为
Button LikeIt = (Button) feed_back_dialog.findViewById(R.id.likeitb);
假设对话框布局有一个id为likeitb的按钮
同样适用于其他观点
Button DontLikeIt = (Button) feed_back_dialog.findViewById(R.id.dontlikeitb);
Button NotNow = (Button) feed_back_dialog.findViewById(R.id.notnowb);
findViewById
查找当前膨胀布局中提到的id的视图。因此,您需要使用对话框对象初始化视图,因为您将布局的内容设置为对话框。视图属于对话框
答案 1 :(得分:1)
你可以做的是你可以像这样膨胀布局。然后使用膨胀视图,您可以获得Button控件。 [我希望 mAct 是活动对象]
LayoutInflater li = LayoutInflater.from(mAct);
View inflatedView = li.inflate(R.layout.ratedialog, null, false);
//button initialization
Button LikeIt = (Button) inflatedView .findViewById(R.id.likeitb);
Button DontLikeIt = (Button) inflatedView .findViewById(R.id.dontlikeitb);
Button NotNow = (Button) inflatedView .findViewById(R.id.notnowb);
答案 2 :(得分:1)
只需使用mAct
更改这些代码行中的feed_back_dialog
由于feed_back_dialog
是您当前的布局
Button LikeIt = (Button) mAct.findViewById(R.id.likeitb);
Button DontLikeIt = (Button) mAct.findViewById(R.id.dontlikeitb);
Button NotNow = (Button) mAct.findViewById(R.id.notnowb);
一定是这样的
Button LikeIt = (Button) feed_back_dialog.findViewById(R.id.likeitb);
Button DontLikeIt = (Button) feed_back_dialog.findViewById(R.id.dontlikeitb);
Button NotNow = (Button) feed_back_dialog.findViewById(R.id.notnowb);