Скажем, у меня есть ListView с некоторыми формулами, как это:Как динамически добавлять компоненты в пользовательский диалог?
((A * 2 + B * 3 + PF * 5)/10)
Когда я нажимаю на него, я хотел бы изменить письма EditTexts
, поэтому я разделил этот String
тогда, если это письмо, которое я должен замените его на EditText, поэтому, что я должен использовать, чтобы это произошло? Я имею в виду, могу ли я активировать активность в окне «Стиль диалога»? Или я могу сделать эту работу с помощью Simple Dialog?
Я попытался это, но он получает сообщение об ошибке при добавлении вида (NullPointerException
)
lsView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> aView, View view,
int i, long l) {
Dialog dialogFormula = new Dialog(NotasActivity.this); //"Parent" activity
dialogFormula.setTitle("Title");
LinearLayout layout = (LinearLayout)findViewById(R.id.DialogLayout);
String[] lines = materias.get(i).getFormula().split(" ");
for (String s : lines) {
if (s.compareTo("PARTIC") == 0) {
EditText edtPartic = new EditText(dialogFormula.getContext));
layout.addView(edtPartic);
} else if (s.contains("A") && s.compareTo("A") != 0) {
} else if (s.compareTo("B") == 0) {
} else if (s.compareTo("C") == 0) {
} else if (s.compareTo("D") == 0) {
} else if (s.compareTo("E") == 0) {
} else if (s.compareTo("F") == 0) {
} else if (s.compareTo("G") == 0) {
} else if (s.compareTo("H") == 0) {
} else if (s.compareTo("I") == 0) {
} else if (s.compareTo("PF") == 0) {
}
}
dialogFormula.setContentView(layout);
return false;
}
});
dialog_formula.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/DialogLayout">
<TextView
android:id="@+id/txtMateriaDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/txtFormulaDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
Где макет объявлен в XML? Кроме того, какая ошибка вы получаете? Нулевой указатель? –
Отредактировано с помощью информации – Markissimo
Что вы пытаетесь сделать с этой строкой: 'LinearLayout layout = (LinearLayout) findViewById (R.id.DialogLayout);'? – Sam