Android: как иметь две отдельные раскладки - PullRequest
0 голосов
/ 13 апреля 2011

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

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

У меня вопрос: могу ли я иметь два отдельных макета (то есть: main.xml и login.xml), и, в зависимости от того, где я нахожусь в коде, просто измените их? И если да, то как?

Я попытался добавить setContentView(R.layout.login); в код, но он просто выбирает последний набор и придерживается его независимо от того, где в коде вы находитесь. Я также попытался разбить часть входа в другой класс, а затем использовать startActivity(new Intent(this, Login.class)); для его вызова, но он почти как будто работал параллельно с основным приложением, поскольку в основном приложении все продолжалось даже до завершения входа в систему.

т.е.: в основном виде деятельности:

startActivity(new Intent(this, Login.class));
Toast.makeText(this, "This is main", Toast.LENGTH_LONG).show();

Затем я получаю всплывающее окно входа в систему с всплывающим над ним всплывающим сообщением - и основное действие просто продолжается независимо от того, что я делаю в действии входа в систему. Активность при входе в систему также не заканчивается - нужно ли ее убить, или сделать для нее System.exit ()?

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

Любая помощь или идеи будут высоко оценены

Ответы [ 3 ]

3 голосов
/ 13 апреля 2011

Правильный способ сделать это состоит в том, чтобы иметь два действия MainActivity и LoginActivity, каждое из которых имеет свой собственный макет. Вы попадете в ад кнопки назад, если не будете использовать этот подход.

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

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

Я думаю, что вы хотите сделать, это запустить новый экран, когда пользователь вошел в систему правильно.просто запустите новое действие, когда пользователь правильно вошел в систему. Получите помощь от следующего:

Intent i = new Intent(this,Login.class);      
        startActivityForResult(i, 1);

Снова в MainActivity используйте onActivityResult () метод для получения результата, если вы хотитевыполнить какое-либо действие обратно в Главной Активности.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==1){
            Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show();
        }
        else{
            Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show();
        }
    }

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

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

У вас есть несколько вариантов.

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

...