Android AlertDialog无法使用自定义布局
我正在尝试构建一个用户体验对话框,其中包含评级和评论 我已经建立了对话框,一切正常,但当我按下可能按钮时,由于某种原因它崩溃了 我的Android AlertDialog无法使用自定义布局,android,android-layout,android-alertdialog,ratingbar,Android,Android Layout,Android Alertdialog,Ratingbar,我正在尝试构建一个用户体验对话框,其中包含评级和评论 我已经建立了对话框,一切正常,但当我按下可能按钮时,由于某种原因它崩溃了 我的onCreate() setupButtonEvents() 以及insertDataToDatabaseFromRating() Logcat out错误 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RatingBar.setOnRati
onCreate()
setupButtonEvents()
以及insertDataToDatabaseFromRating()
Logcat out错误
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RatingBar.setOnRatingBarChangeListener(android.widget.RatingBar$OnRatingBarChangeListener)' on a null object reference
at com.order.app.order.UserProfile.insertDataToDatabaseFromRating(UserProfile.java:144)
第144行:ratingBar.setOnRatingBarChangeListener(新的ratingBar.OnRatingBarChangeListener(){
有谁能帮我解决这个问题吗???
提前感谢!!!!可能
分级栏
在AlertDialog
版面中。要从AlertDialog版面访问视图,请使用在builder.setView(newLayout)
中传递的视图对象
在您的情况下,将视图参数添加到insertDataToDatabaseFromRating
方法,然后访问评级栏
,如下所示:
private void insertDataToDatabaseFromRating(View view) {
ratingBar = (RatingBar)view. findViewById(R.id.ratingBar);
.....
}
调用时,将newLayout
对象传递给insertDataToDatabaseFromRating
对于想从
AlertDialog
访问的其他视图,也可以这样做。我自己刚刚看到了这一点……我问得很傻……但这不算评分。你能帮我做些什么吗?@KostasMatrix:当然,我会尝试,请解释更多关于下一个问题的信息。我建议扩展DialogFragment
。这是一个更好、更多的对象比AlertDialog.builder.
private void insertDataToDatabaseFromRating() {
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
percent = (int) ratingBar.getRating();
ratingNum.setText("" + percent);
}
});
comTxt = ratingComment.getText().toString();
if (!comTxt.isEmpty()) {
ratingCommentText.setText(comTxt);
}
}
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RatingBar.setOnRatingBarChangeListener(android.widget.RatingBar$OnRatingBarChangeListener)' on a null object reference
at com.order.app.order.UserProfile.insertDataToDatabaseFromRating(UserProfile.java:144)
private void insertDataToDatabaseFromRating(View view) {
ratingBar = (RatingBar)view. findViewById(R.id.ratingBar);
.....
}