Я не могу перейти с главной страницы на другой вид деятельности в моем проекте - PullRequest
0 голосов
/ 02 марта 2012

Мне нужна помощь с моим первым проектом, который я сейчас строю.

Мой проект содержит три вида деятельности:

  • Первая - это основная кнопка с двумя кнопками (первая называется «Аннонс», а вторая - «Индекс»).
  • второе действие называется Annonce, как и кнопки, упомянутые выше.
  • третье действие называется Индекс, как и то же, что упоминалось выше.

Я хочу ... Когда я нажимаю кнопку Annonce в главном действии, Android переводит меня на второе действие, и то же самое с другой кнопкой (индекс), и, конечно, я могу вернуться к основному действию.

Мой основной файл .Java:

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 

        annonce = (Button)findViewById(R.id.Annonce); 
        index = (Button)findViewById(R.id.Index);

        annonce.setOnClickListener(this);
        index.setOnClickListener(this);
    } 

    public void onClick(View src) {
      Intent annonce = new Intent(this, Annonce.class);
      startActivity(annonce);
      Intent index = new Intent(this, Index.class);
      startActivity(index);
      finish();
    } 
}

Ответы [ 7 ]

1 голос
/ 02 марта 2012

Что ты делаешь?Вы пытаетесь одним нажатием кнопки перейти на 2 страницы.Вы должны удалить одну Намерение и свою вторую ошибку, вы пытаетесь прыгнуть на бутоны - это забавно

0 голосов
/ 02 августа 2012

Я надеюсь, что вы создали свою деятельность и зарегистрировались в файле манифеста.

сейчас: -

    @Override 
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main); 

            annonce = (Button)findViewById(R.id.Annonce); 
            index = (Button)findViewById(R.id.Index);

            annonce.setOnClickListener(this);
            index.setOnClickListener(this);
        } 

        public void onClick(View src)
          {

              if(src == annonce )
              {
                    //start activity here
                   Intent intent1 = new Intent(this,activityToSwitch);
                   startactivity(intent1);
              }
                if(src == index)
              {
                    //start activity here
                   Intent intent2 = new Intent(this,activityToSwitch);
                   startactivity(intent2);
              }

         }
0 голосов
/ 29 марта 2012

Может быть уже слишком поздно ... но все же хотелось добавить

Не забудьте добавить обе ваши активности в манифесте

0 голосов
/ 03 марта 2012

Я бы обновил файл main.xml и добавил следующие строки для кнопок:

android:clickable="true"
android:onClick="annonce_button_handler"

и

android:clickable="true"
android:onClick="index_button_handler"

Тогда я бы создал эти методы в моей основной деятельности, например:

public void annonce_button_handler(){
    Intent annonce = new Intent(this, Annonce.class);
    startActivity(annonce);
}

public void index_button_handler(){
    Intent index = new Intent(this, Index.class);
    startActivity(index);
}

Это позволит вам иметь действие, которое НЕ реализует onClickListener, и все же позволит вам реализовать несколько кликабельных элементов в вашем коде. Кстати, это должно работать практически для любого элемента, который вы положили в свой XML-файл.

Надеюсь, это поможет!

0 голосов
/ 02 марта 2012

Несколько вещей:

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

Когда вы хотитечтобы установить обработчики кликов, вам нужно убедиться, что кликаемый вид является тем, для которого вы открываете действие.

Это означает, что

public void onClick (View src) {
    switch (src.getId()) {
    case R.id.annonce_button:
        startActivity(new Intent("com.myPackage.myActivity");
        break;
    case R.id.index_button:
        startActivity(new Intent("com.myPackage.myIndexActivity");
        break;
    }
}

у вас есть один случай для каждого идентификатора, по которому вы нажали, гарантируя, что вы только запускаете действие для правильного нажатия кнопки.

Конечно, приведенный выше код предполагает, что вы установили идентификаторы на своих кнопках.Таким образом, эти идентификаторы совпадают с R.id.XXXXXXX, и вы можете использовать их для быстрой проверки.

0 голосов
/ 02 марта 2012

вы неправильно создали OnClickListener

напишите этот код:

OnClickListener annonceBtnClick= new OnClickListener() {
       @Override
       public void onClick(View v) {
         // TODO Auto-generated method stub
          Intent annonce = new Intent(getApplicationContext(), Annonce.class);
          startActivity(annonce);
       }
     };

Сделайте то же самое с кнопкой индекса

0 голосов
/ 02 марта 2012

вы близки, но может быть проблема с кодом onClick.

Попробуйте это вместо того, что у вас есть:

public void onClick(View src) {
  if (src == annonce){
      Intent annonce = new Intent(this, Annonce.class);
      startActivity(annonce);
  }else if (src == index){
      Intent index = new Intent(this, Index.class);
      startActivity(index);
  }
} 

Два изменения: оператор IF / Elseчтобы определить, какой вид был нажат (вы пытались запустить оба вида деятельности, но вы хотите запустить только один, в зависимости от того, какая кнопка).Кроме того, не вызывайте finish () здесь.Вам это здесь не нужно, и эта строка убьет ваше приложение!

Кроме того, в будущем опубликуйте дополнительную информацию о том, что происходит!Я предполагаю, что приложение закрывается, когда вы нажимаете любую кнопку (из-за этого вызова метода finish ()), но в следующий раз сообщите нам!

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