Разработка пользовательского интерфейса Android: текстовый вид текста не меняется - PullRequest
0 голосов
/ 26 апреля 2011

У меня проблемы с пониманием того, как мне организовать свой пользовательский интерфейс в Android.Первоначально я планировал создавать TextViews и ListViews программно и изменять их при нажатии кнопок и т. Д.

Вот моя первая простая попытка.viewFriends - это метод в моем классе Activity.Вызывается, когда нажата кнопка меню.

    private void viewFriends()
{
    mText = new TextView(this);
    mText.setText("Gathering information...");
    setContentView(mText);

... после этого не имеет значения код

Почему не работает этот, казалось бы, простой пример?Как я должен логически организовывать и управлять объектами пользовательского интерфейса (TextViews, ListViews, Buttons и т. Д.).

Спасибо.

Ответы [ 4 ]

1 голос
/ 26 апреля 2011

Лучше всего было бы иметь те списки и текстовые представления в ваших XML-файлах и дать им подходящий идентификатор, например:

    <ListView       
        android:id="@+id/myList"
            android:layout_width="wrap_content"
            android:layout_weight="1"
    />

Как и выше, добавьте атрибут android:id в текстовое представление и в файл XML. Как только вы определили этот путь в вашем Java-файле, есть ссылки на них:

ListView myListObj = (ListView)findViewById(R.id.myList);

Теперь у вас есть объект myListObj в вашем Java-файле, и теперь вы можете делать с ним все, что захотите.

:)

Позвольте мне, если вы обнаружите какую-либо проблему в этом, чтобы я мог обновить ответ, чтобы удовлетворить ваши конкретные потребности.

0 голосов
/ 26 апреля 2011

Не используйте setContentView в вашем методе. Обычно его следует вызывать только один раз в методе onCreate вашей активности. Лучше всего заранее определить ваши элементы / TextViews в xml, получить для них ручку (findViewbyId ...) и измените их таким образом.

Если вы создаете их программно, просто добавьте их в контейнер представлений из вашего xml. Нравится:

setContentView(R.layout.main);

Допустим, в main.xml есть LinearLayout с id: root.

// get accces to that layout:
LinearLayout rootLayout = (LinearLayout) findViewById (R.id.root);

// create a new TextView
TextView tv1 = new TextView (this);
tv.setText("Hello!");
// add it to your base layout
rootLayout.addView(tv1);

// done! :)
0 голосов
/ 26 апреля 2011

Вы должны перезагрузить / обновить свою активность после ее изменения.

Попробуйте это

@Override
    protected void onResume() {

        if(param.equalsIgnoreCase("gr"))
        {
        finish();
        Intent myIntent = new Intent(yourActivity.this, yourActivity.class);
        startActivity(myIntent);
    }
0 голосов
/ 26 апреля 2011

Сделайте двойную проверку того, что вы получаете в «этом». измените его на имя вашего Java-файла. Это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...