что не так в этом пользовательском диалоге - PullRequest
0 голосов
/ 02 апреля 2011

Я создаю пользовательский диалог, который покажет информацию о продукте: XML-макет для диалога

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    android:id="@+id/layout_root"    
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:orientation="vertical"
   >           
    <TextView 
    android:id="@+id/lblCal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
    </TextView>
    <TextView 
    android:id="@+id/lblFat" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
    </TextView>
    <TextView 
    android:id="@+id/lblCarb" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
    </TextView>
    <TableRow 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
        <Button android:layout_width="wrap_content" 
        android:text=" OK " 
        android:id="@+id/btnOK" 
        android:layout_height="wrap_content">
        </Button>
        <Button android:layout_width="wrap_content" 
        android:text="Home" 
        android:id="@+id/btnHome" 
        android:layout_height="wrap_content">
        </Button>
    </TableRow>

</LinearLayout>

метод onCreatDialog определяется следующим образом:

@Override
  protected Dialog onCreateDialog(int id) {
      Dialog d;
      switch (id) {
        case 0:
            d = new Dialog(this);
            d.setContentView(R.layout.result_dialog);               
            d.setTitle(item);
            TextView lblEnergy = (TextView) d.findViewById(R.id.lblCal);                
            lblEnergy.setText("Energy: "+ String.valueOf(cal));
            TextView lblFat = (TextView) d.findViewById(R.id.lblCal);               
            lblFat.setText("Fat: "+  String.valueOf(fat));
            TextView lblCarbs = (TextView) d.findViewById(R.id.lblCal);             
            lblCarbs.setText("Carbs: " + String.valueOf(carb));
            Button ok = (Button) d.findViewById(R.id.btnOK);            
            ok.setOnClickListener(i);
            Button home = (Button) d.findViewById(R.id.btnHome);            
            home.setOnClickListener(i);
            break;
            default: d = null;
      }
    return d;
  }

но когда я запускаю программу, первые два текстовых представления не появляются.

в чем проблема? !!

что я должен добавить к кнопке ОК, чтобы закрыть диалог, потому что когда я вызываю DissmisDialog (0); когда я снова нажимаю на другой элемент, содержимое диалога никогда не менялось

1 Ответ

2 голосов
/ 02 апреля 2011

Вам необходимо использовать правильные идентификаторы для вызовов findViewById:

Old:

        TextView lblEnergy = (TextView) d.findViewById(R.id.lblCal);                
        lblEnergy.setText("Energy: "+ String.valueOf(cal));
        TextView lblFat = (TextView) d.findViewById(R.id.lblCal);               
        lblFat.setText("Fat: "+  String.valueOf(fat));
        TextView lblCarbs = (TextView) d.findViewById(R.id.lblCal);             
        lblCarbs.setText("Carbs: " + String.valueOf(carb));

Новое:

        TextView lblEnergy = (TextView) d.findViewById(R.id.lblCal);                
        lblEnergy.setText("Energy: "+ String.valueOf(cal));
        TextView lblFat = (TextView) d.findViewById(R.id.lblFat /* <<< */);               
        lblFat.setText("Fat: "+  String.valueOf(fat));
        TextView lblCarbs = (TextView) d.findViewById(R.id.lblCarb /* <<< */);             
        lblCarbs.setText("Carbs: " + String.valueOf(carb));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...