2014-02-23 2 views
0

Я получаю странное поведение, и я не уверен, что я должен.android: кнопки переключателей XML, но не функции

У меня есть кнопка 4. 2 - «True» и «False». и еще два являются «Назад» и «Далее» .:

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:padding="24dp" 
     android:id="@+id/question_text_view" /> 

    <LinearLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:orientation="horizontal"> 

    <Button android:id="@+id/prev_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/prev_question_button" 
     android:drawableLeft="@drawable/arrow_left" 
     android:drawablePadding="4dp" />   
      <Button android:id="@+id/next_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/next_question_button" 
     android:drawableRight="@drawable/arrow_right" 
     android:drawablePadding="4dp" /> 
     </LinearLayout> 

    <LinearLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:orientation="horizontal"> 

     <Button android:layout_width="wrap_content" 
      android:id="@+id/true_button" 
      android:layout_height="wrap_content" android:text="@string/true_button" /> 
     <Button android:layout_width="wrap_content" 
      android:id="@+id/false_button" 
      android:layout_height="wrap_content" android:text="@string/false_button" /> 
    </LinearLayout> 
</LinearLayout> 

Я хочу, чтобы переключать кнопки так что «следующий» и «предыдущий» будет под истинным ложным. Когда я перемещаю первый блок линейного макета, после второго. Я получаю кнопки в правильном порядке, но предыдущие и следующие кнопки ведут себя как кнопки True/False, а кнопки True/False ведут себя как следующий/Prev (функциональность не изменилась)

Что я делаю неправильно? (Im нового для XML- и Android)

Edit: Я не переключение идентификаторов. Поэтому я не могу сказать, почему он ведет себя так.

public class QuizActivity extends Activity { 
    private Button mTrueButton; 
    private Button mFalseButton; 
    private Button mNextButton; 
    private Button mPrevButton; 
    private TextView mQuestionTextView; 
    private TrueFalse mQuestionBank[] = new TrueFalse[] { 
      new TrueFalse(R.string.question_aftrica, true), 
      new TrueFalse(R.string.question_americas, false), 
      new TrueFalse(R.string.question_asia, true), 
      new TrueFalse(R.string.question_oceans, false) }; 
    private int mCurrentIndex = 0; 

    private void updateQuestion() { 
     int question = mQuestionBank[mCurrentIndex].getQuestion(); 
     mQuestionTextView.setText(question); 
    } 

    private void checkAnswer(boolean useRressedTrue) { 
     boolean answerIsTrue = mQuestionBank[mCurrentIndex].isTrueQuestion(); 
     System.out.println("check"); 
     int textID; 
     if (useRressedTrue == answerIsTrue) { 
      textID = R.string.correct_toast; 
     } else { 
      textID = R.string.incorrect_toast; 
     } 
     Toast.makeText(this, textID, Toast.LENGTH_SHORT).show(); 
     // System.out.println("check dis"); 

    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_quiz); 

     mQuestionTextView = (TextView) findViewById(R.id.question_text_view); 
     int question = mQuestionBank[mCurrentIndex].getQuestion(); 
     mQuestionTextView.setText(question); 

     mQuestionTextView.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length; 
       updateQuestion(); 

      } 
     }); 

     mTrueButton = (Button) findViewById(R.id.true_button); 
     mTrueButton.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View arg0) { 
         // TODO Auto-generated method stub 
         checkAnswer(true); 

        } 

       }); 
     mFalseButton = (Button) findViewById(R.id.false_button); 
     mFalseButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       checkAnswer(false); 

      } 

     }); 
     mPrevButton = (Button) findViewById(R.id.prev_button); 
     mPrevButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length; 
       updateQuestion(); 
      } 
     }); 
     mNextButton = (Button) findViewById(R.id.next_button); 
     mNextButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length; 
       updateQuestion(); 
      } 
     }); 
     updateQuestion(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.quiz, menu); 
     return true; 
    } 

} 
+0

Используйте RelativeLAyout. вы можете поместить свои кнопки относительно друг друга – Raghunandan

+0

Что вы подразумеваете под «кнопками переключателей, но не функциональностью»? – Raghunandan

+0

Я имею в виду, что когда я нажимаю кнопку «Далее», я получаю кнопку «Правда» – Yevgeni

ответ

1

Использование RelativeLayout лучше, хотя это может быть достигнуто с LinearLayout также

http://developer.android.com/guide/topics/ui/declaring-layout.html

I want to switch the buttons so the "next" and "prev" will be underneath the true false 

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

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

Edit:

После просмотра редактируемого поста я не вижу ничего плохого. Я предлагаю вам очистить и построить проект или попробовать удалить и переустановить.

+0

** Отредактировано ** Код, если вид деятельности, как вы видите. никаких изменений с идентификатором. – Yevgeni

+1

@YevgeniTarler проблем нет. Я не понимаю, о какой функциональности вы говорите. или попробуйте удалить и переустановить – Raghunandan

0

Я удалил файл R.java, он воссоздал меня еще один, и теперь он работает. Не знаю, почему.

Спасибо в любом случае.

+0

Если вы очищаете и строите свой проект, он также должен работать coz R.java будет регенерирован – Raghunandan

+0

он автоматически создается после каждого чиста. Есть ли способ лучше? – Yevgeni

+0

Обычно этого не должно быть. Предположим, что вы добавили новый ресурс с идентификатором, запись будет сделана в R.java немедленно. Так что его обновили. В вашем случае это не так. И чистая, и сборка должна исправить это. – Raghunandan

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