2013-03-11 3 views
0

Я абсолютно новый в Android. Мне нравится загружать макет xml, нажав EditText. Этот конкретный xml заполнен кнопками с текстами. Когда пользователь нажимает одну из кнопок, текст на кнопке будет отображаться в EditText. У меня две проблемы.Загрузить XML-макет, нажав EditText

(1)EditText IDEditTxt = (EditText) findViewById(R.id.IDeditText); 

В этой строке, IDEditTxt всегда нулевой, даже если IDeditText уверен внутри R.id.I испробовали все подходы я мог бы найти из Интернета, как чистые, удалите XML, переписать XML. Я пробовал все, но все еще имею проблемы. Однако текст внутри этого EditText может быть прочитан для другой цели. Я не понимаю, почему IDEditTxt walays null, но текст внутри этого EditText может быть прочитан.

new AlertDialog.Builder(this).setTitle("New Tracker").setView(addView) .setPositiveButton("ADD", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { addWord((TextView) addView.findViewById(R.id.IDeditText)); } }).setNegativeButton("Cancel", null).show();

(2) Как я могу осуществить загрузку макета XML, нажав EditText. Затем текст, отображаемый на кнопке, будет отображаться в этом EditText.

Благодаря

+0

Я бы порекомендовал вам не торопиться и получить хорошую книгу на Android. Основываясь на вашем вопросе, есть много вещей, которые вы не понимаете правильно, и это затрудняет предоставление ответа на ваш вопрос. – Egor

+0

@Egor Да, это точно. То, что я делаю, - это обучение и развитие в одно и то же время. Поскольку я спешу, чтобы продукт закончил в определенные сроки, у меня нет времени учиться. Вот почему я иду вместе. Могу ли я узнать, что лучше всего подходит для этой проблемы, а не просить меня снова прочитать книгу? Да, я также читаю книгу. – Bryanyan

+0

Не понимаю. Если findViewById (R.id.IDeditText) всегда возвращает null, как он работает в вашем AlertDialog? –

ответ

0

В этой строке, IDEditTxt всегда нулевой, даже если IDeditText уверен внутри R.id .... Я не понимаю, почему IDEditTxt является walays утратившим но текст внутри этого EditText можно прочитать.

Ваш EditText существует в файле Layout но EditText объект вы пытаетесь объявить и использовать не null, пока вы inflate ваш layout. Вы должны inflate в layout первой, либо с помощью setContentView(R.layout.your_layout_file); или с помощью inflater, как вы делаете, прежде чем AlertDialog

(2) Как я могу осуществить загрузку макета XML, нажав EditText. Затем текст, отображаемый на кнопке, будет отображаться в этом EditText.

Обычно лучше не создавать отдельные layouts в том же Activity вот так. Вы можете столкнуться с ошибками в попытке использовать View, который находится в первом Layout, который вы раздуваете или проблемы с эффективностью. Вы должны создать Layout для Actvity и использовать это для всего, если у вас нет конкретной причины, по которой вы не можете. Вы можете начать новый Activity, когда действие произойдет с требуемым layout или установите visibility из Buttons в gone, затем выполните их visible после того, как произойдет действие. Надеюсь, это поможет немного, и предложение пройти через книгу и учебники - действительно хорошая идея. Это может занять больше времени, но, несомненно, сэкономит вам время, когда вы поймете, как работает система.

+0

спасибо за ваше предложение. Если это не очень хорошая идея, могу я спросить вас по-другому? То, что я хотел бы реализовать, - это когда пользователь нажимает EditText, мне нравится отображать экран для выбора пользователя, а не пользователь должен вводить ключ. Только четыре текста, которые мне нравятся для отображения для пользователя, такие как Vehicle, Pet, Human, Others. Затем пользователь делает выбор. Что может быть лучшим способом для ввода этого пользователя. Затем выделенный текст будет отображаться в EditText. Спасибо – Bryanyan

+0

Ваше предложение хорошее. Я должен понять, как работает система. Есть ли у вас учебник? Спасибо – Bryanyan

+0

По вашему предложению я изменился как окончательный. Просмотреть addView = getLayoutInflater(). Inflate (R.layout.add, null); \t \t EditText IDEditTxt = (EditText) addView.findViewById (R.id.IDeditText); если (IDEditTxt! = NULL) { IDEditTxt.setOnFocusChangeListener (новый View.OnFocusChangeListener() { \t общественного недействительными onFocusChange (View v, логическое HasFocus) { \t Toast.makeText (getBaseContext(), ((EditText) v) .getId() + "имеет фокус -" + hasFocus, Toast.LENGTH_LONG) .show();}}); } Но он никогда не входит в этот цикл IDEditTxt.setOnFocusChangeListener (новый View.OnFocusChangeListener(). – Bryanyan

Смежные вопросы