2014-01-16 2 views
-2

Я могу создать Android AlertDialog вот так.Настройка макета для Android AlertDialog

AlertDialog.Builder MyDialog = new AlertDialog.Builder(this); 

Но что важно для меня, как я могу установить макет для этого. Когда я использую Диалог Я могу инициализировать и установить макет как это.

dialog = new Dialog(Login.this,android.R.style.Theme_Holo_Dialog); 
dialog.setContentView(R.layout.journey_details); 

Могу ли я сделать что-то подобное для установки макета. Или в AlertDialog такая функциональность не существует.

Сначала я создал пользовательский диалог, и когда я устанавливаю время для текстового представления, он дал нулевой указатель. Вот почему я попробовал AlertDialog. Это мой первый код. Я не смог понять ошибку.

public void ShowJourneyDetails() { 
    dialog = new Dialog(Login.this,android.R.style.Theme_Holo_Dialog); 

    crnt_time=(TextView)findViewById(R.id.jd_txt_str_tim); 
    date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    String crnt_date =date.format(new Date()).toString(); 
    crnt_time.setText(crnt_date); 

    } 

Это дало мне ошибку. Вот почему я попробовал AlertDialog.

Но мой AlterDialog также дает мне NullPointer, и ошибка исходит от кнопки. Мой код ниже

public void ShowJourneyDetails() { 

    // dialog = new Dialog(Login.this,android.R.style.Theme_Holo_Dialog); 
    final AlertDialog.Builder MyDialog = new AlertDialog.Builder(this); 
    LayoutInflater factory = LayoutInflater.from(Login.this); 
    final View DialogView = factory.inflate(R.layout.journey_details, null); 
    MyDialog.setView(DialogView); 

    LoginIntent = new Intent(Login.this, DropPickUp_List.class); 
    check_fuel = (CheckBox) findViewById(R.id.jd_chk_ful); 
    check_e_oil = (CheckBox) findViewById(R.id.jd_chk_eoil); 
    check_wtr = (CheckBox) findViewById(R.id.jd_chk_wtr); 
    check_b_oil = (CheckBox) findViewById(R.id.jd_chk_boil); 
    check_lic = (CheckBox) findViewById(R.id.jd_chk_lc_inc); 
    check_gt_pass = (CheckBox) findViewById(R.id.jd_chk_gt_ps); 
    check_bills = (CheckBox) findViewById(R.id.jd_chk_bil); 
    crnt_time = (TextView) findViewById(R.id.jd_txt_str_tim); 
    dialogButton = (Button) dialog.findViewById(R.id.jd_btn_strt); 

    MyDialog.setView(check_fuel); 
    MyDialog.setView(check_e_oil); 
    MyDialog.setView(check_wtr); 
    MyDialog.setView(check_b_oil); 
    MyDialog.setView(check_lic); 
    MyDialog.setView(check_gt_pass); 
    MyDialog.setView(check_bills); 
    MyDialog.setView(dialogButton); 

    MyDialog.setView(crnt_time); 

    SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    String crnt_date = date.format(new Date()).toString(); 
    crnt_time.setText(crnt_date); 

    final Stack<String> ItemStack=new Stack(); 

    dialogButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Toast.makeText(Login.this, msg, Toast.LENGTH_LONG).show(); 

     } 
    }); 

    MyDialog.show(); 

} 

Я не могу понять ошибку.

+0

Вы хотите создать пользовательский AlertDialog, не так ли? – Tugrul

+0

создать пользовательский диалог – jyomin

ответ

2

Если вы хотите создать пользовательский AlertDialog, то вам нужно Inflate Layout Как показано ниже:

LayoutInflater factory = LayoutInflater.from(this); 
final View dialogView = factory.inflate(
      R.layout.custom_progress_layout, null); 

и установить это Layout на ваш Dialog, как показано ниже:

Dialog main_dialog = new Dialog(this, R.style.Theme_Dialog); 
    main_dialog.setContentView(dialogView); 

Вот и все.

1

Да. Вы можете сделать это так:

LayoutInflater mLayoutInflator = LayoutInflater.from(this); 
final View customDialogView = mLayoutInflator.inflate(
     R.layout.journey_details, null); 
final AlertDialog customDialog= new AlertDialog.Builder(this).create(); 
customDialog.setView(customDialogView); 
customDialog.show(); 
Смежные вопросы