나는 AlertDialog.Builder
을 이미 final
으로 설정했습니다.withClick withClickListener에서 대화 상자를 닫는 방법
대화 상자 안에 버튼이 있는데,이 버튼을 클릭하면 사용자를위한 구매가 이루어진 다음 닫힙니다. '닫음'부분에 문제가 있습니다.
Button buyButton = new Button(context);
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 100, 0.0f);
buyButton.setLayoutParams(buttonParams);
buyButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view){
if (STOCK_TO_PURCHASE.size() != 0) {
Player thisPlayer = players[getPlayerIndexByPlayOrder(CURRENT_TURN)];
purchaseStock(thisPlayer);
buyStockDialog.dismiss();
} else {
buyStockDialog.dismiss();
}
}
});
이 IDE는 나를 말하고 내가 buyStockDialog
을 타입 변환해야 다음은 버튼에 대한 코드입니다. 그래도 타입 변환하면 런타임 오류가 발생하여 buyStockDialog
에서 DialogInterface
으로 변환 할 수 없다는 메시지가 나타납니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
나는 이미 사용자 정의 onBackPressed
메서드를 가지고 있으며 응용 프로그램이 뒤로 버튼을 모방 한 것처럼 만드는 것을 고려합니다. 여기서 가장 좋은 해결책은 무엇이라고 생각하십니까? 요청에 따라에 AlertDialog.Builder에 대한
선언 라인 : 두 번째 요청에 따라
ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.AppTheme);
final AlertDialog.Builder buyStockDialog = new AlertDialog.Builder(ctw);
buyStockDialog.setTitle("Buy Stock: ");
는, 전체 대화의 코드와 레이아웃 :
public void buyStock(View view){
Context context = getApplicationContext();
ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.AppTheme);
final AlertDialog.Builder buyStockDialog = new AlertDialog.Builder(ctw);
buyStockDialog.setTitle("Buy Stock: ");
//create ScrollView to hold everything
ScrollView scrollView = new ScrollView(context);
//generate content for dialog
LinearLayout dialogContainer = new LinearLayout(context);
dialogContainer.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 350, 1);
params.gravity = Gravity.CENTER;
dialogContainer.setLayoutParams(params);
dialogContainer.setPadding(15, 15, 0, 15);
dialogContainer.setBackgroundColor(Color.WHITE);
//each hotel stock options
for (int i = 0; i < hotels.size(); i++) {
Hotel testHotel = hotels.get(i);
testHotel.setPrice(200);
View stockPicker = getStockPicker(testHotel);
LinearLayout.LayoutParams pickerParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 75, 1.0f);
pickerParams.gravity = Gravity.LEFT;
stockPicker.setLayoutParams(pickerParams);
dialogContainer.addView(stockPicker);
stockPicker.setBackgroundColor(0xffffff);
}
LinearLayout scrollWrapper = new LinearLayout(context);
scrollWrapper.addView(scrollView);
scrollWrapper.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300, 1.0f));
scrollView.addView(dialogContainer);
scrollView.setLayoutParams(params);
LinearLayout dialogLayout = new LinearLayout(context);
dialogLayout.setOrientation(LinearLayout.VERTICAL);
dialogLayout.setBackgroundColor(Color.WHITE);
Button buyButton = new Button(context);
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 100, 0.0f);
buyButton.setLayoutParams(buttonParams);
buyButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view){
if (STOCK_TO_PURCHASE.size() != 0) {
Player thisPlayer = players[getPlayerIndexByPlayOrder(CURRENT_TURN)];
purchaseStock(thisPlayer);
buyStockDialog.dismiss();
} else {
buyStockDialog.dismiss();
}
}
});
dialogLayout.addView(scrollWrapper);
dialogLayout.addView(buyButton);
buyStockDialog.setView(dialogLayout);
buyStockDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
int numInterations = STOCK_TO_PURCHASE.size();
for (int i = 0; i < numInterations; i++) {
STOCK_TO_PURCHASE.remove(0);
}
}
});
buyStockDialog.show();
}
을 buyStockDialog입니다 AlertDialog.Builder? – Blackbelt
buyStockDialog에 대한 선언 행을 포함시킬 수 있습니까? – NameSpace
선언 라인을 추가했습니다 –