2012-08-08 3 views
0

Я хочу изменить контент при смене кнопки, но он никогда не работает.При нажатии кнопки содержимое не изменяется. - Android

 button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       setContentView(R.layout.blahdyblah); 
      } 
     }); 

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

Я также попытался поместить setContentView в другую функцию ... Это все еще не работает.

+0

Почему вы пытаетесь изменить вид содержимого на 'Activity', если он уже установлен? Что вы пытаетесь достичь? –

+0

Я пытаюсь изменить один контент на другой кнопкой ... – KeirDavis

+0

вы можете разместить весь код – rajpara

ответ

1

Я предполагаю, что вы хотите, чтобы ваш экран переключался на другую компоновку при нажатии кнопки. Попробуйте следующее. Прежде всего, сделайте операцию, называемую «blahdyblah», а не просто файл xml. Итак, у вас должно быть два действия: ваша основная деятельность, в которой есть кнопка с onClickListener, и отдельное действие, называемое «blahdyblah»). После того как вы сделали это, попробуйте следующее:

button.setOnClickListener(new View.OnClickListener() 
{ 
     @Override 
     public void onClick(View v) 
     { 
      Intent intent = new Intent(MainActivity.this, blahdyblah.class); 
      startActivity(intent); 
     } 
}); 

В коде заменить «MainActivity» с именем класса, в котором вы пишете этот onClickListener.

Установите содержимое содержимого файла blahdyblah.java на R.layout.blahdyblah Я уверен, что должен делать то, что вы ищете.

blahdyblah.java

public class blahdyblah extends Activity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.blahdyblah); 
    } 
} 
1

Можете ли вы попробовать ActivityName.this.setContentView (R.layout.blahdyblah), где ActivityName - ваша деятельность? Это может быть, что setContentView вызывается контекст вы в настоящее время дела с .. который внутри вашей кнопка OnClick кнопки

Если это не работает, не могли бы вы изменить свой ответ, чтобы отобразить весь ваш код

+0

Тестирование сейчас. – KeirDavis

+0

Спасибо. Но это не работает ... – KeirDavis

1

I предложили бы; 1) убедитесь, что кнопка находится в том же контексте/класс, если где текущая точка зрения 2) убедитесь, что ваш «blahdyblah» является правильно настроить XML-файл

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

+0

Да. Я проверил его. Это правильный XML-файл. И почему бы мне нажать что-то, чего там нет ... – KeirDavis

+0

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

+0

Ваш «выбранный» ответ уже был предложен в моем начальном посте «Вы также можете начать новое мероприятие, в котором вы можете установитьContentView» в следующий раз прочитайте ближе. –

1

ли это так:

{ 
    ... 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setBlahdyBlah(); 
     } 
    }); 
} 

... 

private void setBlahdyBlah() { 
    setContentView(R.layout.blahdyblah); 
} 

Это будет гарантировать, что ваш призыв к setContentView() выполняется с правого контекста.

Я не совсем уверен, почему это не сработало так, как вы его написали, но я думаю, что ваш код зависит от вашего OnClickListener, который был создан как правильный внутренний класс Activity, и что глобальный 'R' быть правильно доступным из этой области. Я не уверен, где это не удалось, но мой путь устраняет неизвестные из этой проблемы. Плюс, вот как я это сделал, и это сработало для меня.

Хммм, при дальнейшем рассмотрении, я уверен, что это будет работать тоже:

final Activity foo = this; 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      foo.setContentView(R.layout.blahdyblah); 
     } 
    }); 

Я думаю, что все это связано с вашей OnClickListener не будучи собственно внутренний класс вашей деятельности.

Смежные вопросы