Не могу использовать более 2 макетов - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь создать приложение для Android со многими макетами XML, но у меня проблема здесь.проблема начинается со второй кнопки, а затем происходит сбой приложения.

public class MonkeyQuest_androidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button newGame = (Button) findViewById(R.id.newGame);
    newGame.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            setContentView(R.layout.name);
            final Button setName= (Button) findViewById(R.id.setName);
            setName.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    setContentView(R.layout.Menu);
                }
            });
        }
    });
}

}

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Вместо установки представления контента на новый макет, запустите новое действие и задайте представление контента в этом действии onCreate(), так же, как в этом действии.

Запустите новое действие с:

Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);

Подробнее: http://www.javacodegeeks.com/2010/11/android-full-app-part-5-launch-activity.html#ixzz1ljJohpib

В противном случае любые представления, которые вы объявили в действии, будут находиться за новым раздутым представлением (если не будет восстановлено), что также может вызвать множество других проблем.

1 голос
/ 08 февраля 2012

Вы не можете вызывать setContentView() более одного раза для каждого действия.

Если вы хотите переключить макеты, вам нужно либо создать новое действие, чтобы перейти к нему, либо поместить все представления.Вы хотите в свой один макет и скрыть / показать только соответствующие с помощью setVisibility () или с чем-то вроде ViewFlipper

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