2015-04-30 3 views
-1

У меня простая проблема. Я пытаюсь переключить макет между Главным меню и О страницами. В главном меню нет проблем, когда я нажимаю кнопку «about». Но в макете «about» , когда я нажимаю кнопку «вернуться в меню», он просто не работает. И код этого макета находится в about.java, который также расширяет Activity.Пожалуйста, посмотрите.Переключение макета Android

в MainActivity.java:

Button button3 = (Button) findViewById(R.id.button3); 
     button3.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(v.getContext(), About.class); 
       setContentView(R.layout.about); 
      } 
     }); 

работает только fine.But в About.java:

button1.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       setContentView(R.layout.activity_main); 
       Intent intent = new Intent(this, MainActivity.class); 
       startActivity(intent); 


     } 

    }); 

ничего happens.I перепробовал все комбинации внутри OnClick(), но просто не работа. Каковы ваши идеи? Спасибо и хорошо провели день.

+0

вы можете удалить 'setContentView (R.layout.activity_main); 'в About.java и попробовать? – whoami

+0

wow реально странный код. Вам не хватает действительно важной части того, как работает Android. http://developer.android.com/reference/android/app/Activity.html То, что вы пытаетесь сделать, это просто открыть разные действия (я думаю), поэтому startActivity - это правильная часть. Все остальное очень плохо, см. Http://source.android.com/source/code-style.html#follow-field-naming-conventions –

+0

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

ответ

0

Попробуйте сделать то же самое, как и в вашем MainActivity в вашем AboutActivity:

button1_.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(v.getContext(), MainActivity.class); 
      setContentView(R.layout.activity_main); //should be without this line if you set the layout in your onCreate method in the MainActivity (respectively AboutActivity) 
      startActivity(intent); 
     } 
    }); 

Если он работает один раз, должен работать в два раза, а

+0

'setContentView (R.layout.activity_main);' будет вызываться в MainActivity.onCreate() правильно? почему мы должны это явно называть? – whoami

+1

Мне не нужно, я думаю, когда мы создаем намерение, а затем начинаем деятельность, этого достаточно, но парень установил его, и я думаю, что это не сделает все хуже, поэтому я оставил его там, но правильный путь без него -> Документация http://developer.android.com/training/basics/firstapp/starting-activity.html –

+0

Какова цель настройки ContentView перед запуском Activity? –

1

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

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

Это должно быть что-то вроде этого:

MainActivity.java

Button button3 = (Button) findViewById(R.id.button3); 
    button3.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(v.getContext(), About.class); 
      startActivity(intent); 
     } 
    }); 

About.java

button1.setOnClickListener(new Button.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(this, MainActivity.class); 
      startActivity(intent); 
    } 

}); 

Для получения дополнительной информации, проверить этот http://developer.android.com/training/basics/firstapp/starting-activity.html