首先它运行平稳,但当我再次点击它时它会停止
我在尝试在AlertDialog
java.lang.IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母身上调用removeView()。
rtb = LayoutInflater.from(getContext()).inflate(R.layout.ratingbar_dialog, null);
rb = (RatingBar) rtb.findViewById(R.id.rtbDialog);
ad = new AlertDialog.Builder(getContext());
ad.setView(rtb);
ll1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ad.setMessage("Rate Price");
ad.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
ad.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
rtbPrice.setRating(rb.getRating());
}
});
ad.show();
}
});
答案 0 :(得分:2)
因为每次调用rtb
时,都会创建一个新对话框,同时添加相同的视图inflate
作为对话框内容(所以第一次有效,然后第二次出现异常)。
解决它:
setView
移至onClick
进入onClick
方法rtb
内,删除if (rtb.getParent() instanceOf ViewGroup) { ((ViewGroup)
rtb.getParent()).removeView(rtb); }
的父母:import Alamofire
struct JsonParameterEncoding: ParameterEncoding {
private let jsonString: String
init(jsonString: String) {
self.jsonString = jsonString
}
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = urlRequest.urlRequest!
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = jsonString.data(using: .utf8)
return urlRequest
}
}
答案 1 :(得分:1)
不要给view
充气。 。
通过setContentView()
设置xml,然后通过rating bar
FindviewbyId()