2017-01-18 6 views
-5

プログラミングに慣れていないので、コードに援助が必要です。テキストビューで文字列を表示しようとしていますいくつかのボタンを使って。 一般的な考え方は、ボタン「次へ」を押すと文字列配列の次の文字列が表示され、「前の」ボタンを押すと文字列配列の前の文字列が表示されます。文字列配列から文字列を取得し、ボタン(アンドロイド)を使用してTexttViewに1つずつ表示する方法

(コードとの私の経験は、これまでのところ、C/C++のみであるので、私はJavaのコードを使用していないよので、私のコードは本当に台無しにされている場合、私は本当にごめんなさい)

これはアクティビティです。

public class MainActivity extends AppCompatActivity { 
    int question_number = 0; 

    String[] mTestArray; 

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

     mTestArray = getResources().getStringArray(R.array.questions_array); 
    } 

    protected void nextQuestion() 
    { 
     int maxIndex = mTestArray.length; 

     if(question_number == maxIndex) showResult(); 
     else 
     { 
      question_number++; 
      updateTextView(question_number); 
     } 
    } 

    protected void previousQuestion() 
    { 
     int minIndex = 0; 
     Button btnPrevious = (Button) findViewById(R.id.btnPrevious); 

     if (question_number == minIndex) btnPrevious.setEnabled(false); 
     else 
     { 
      question_number--; 
      updateTextView(question_number); 
     } 
    } 

    private void updateTextView(int i) { 
     TextView textView = (TextView)findViewById(R.id.txtQuestion); 
     textView.setText(mTestArray[i]); 
    } 

    private void showResult() 
    { 
     //show result 
    } 
} 

機能nextQuestionが 機能previousQuestionが「question_array」文字列配列内の前の文字列を表示する文字列配列「questions_array」の次の文字列を表示する と機能updateTextViewはTextViewに「txtQuestion」

内の文字列を変更するものです

これはXMLファイルです:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 


    <TextView 
     android:textAppearance="?android:textAppearanceLarge" 
     android:textColor="@color/black" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/btnNext" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="78dp" 
     android:id="@+id/txtQuestion" 
     /> 

    <Button 
     android:text="Previous" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/btnPrevious" 
     android:onClick="previousQuestion" 
     android:layout_below="@+id/txtQuestion" 
     android:layout_toLeftOf="@+id/btnNext" 
     android:layout_toStartOf="@+id/btnNext" 
     android:layout_marginRight="62dp" 
     android:layout_marginEnd="62dp" /> 

    <Button 
     android:text="Next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="176dp" 
     android:id="@+id/btnNext" 
     android:onClick="nextQuestion" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginRight="71dp" 
     android:layout_marginEnd="71dp" /> 

</RelativeLayout> 

、これは文字列配列含まstring.xmlを次のとおりです。私は、アプリケーションを実行しようとしていると、それはエラーなしで実行さ

<resources> 
    <string name="app_name">My Application</string> 

    <string-array name="questions_array"> 
     <item>Question 1</item> 
     <item>Question 2</item> 
     <item>Question 3</item> 
     <item>Question 4</item> 
     <item>Question 5</item> 
     <item>Question 6</item> 
     <item>Question 7</item> 
     <item>Question 8</item> 
     <item>Question 9</item> 
     <item>Question 10</item> 
    </string-array> 
</resources> 

を。以下のために前に残念ながら、私のアプリケーションが私の悪い英語のための

申し訳ありませんが停止している

、そして感謝:しかし、私はボタンをクリックしようとした時はいつでも、アプリが自動的に閉じられます。このメッセージウィンドウポップ助けて!

+0

ヒント:カウンタを定義し、everyOnClickがその値をincreseと –

+0

question_numberは常に0であるそのインデックスに配列から要素を取得します!あなたはあなたのカウンターから何も加えたり引いたりしません – gmetax

+0

申し訳ありません私は間違ったJavaコードをアクティビティに置いていますが、すべてのonClickを増やすカウンターを使ってみましたが、それでも動作しませんでした – Kenly

答えて

1

public void yourFunction (View view) { 
    //Your code 
} 

あなたはあなたの関数の引数としてViewを追加していないので、あなたのレイアウトが故に、それを取得するつもりはありませんあなたのボタンをクリックすると、アプリケーションがクラッシュします。

あなたはまた、あなたがでているどのインデックス数えることに何かのように、メンバ変数int count=0;を作成し、すべての次の質問にこれcount++;作成し、すべての前の質問に、それはcount--;

+0

おかげさまで大変感謝しています! 私は最初のアンドロイドコードを始めたばかりで、スタッフの仕組みについてはあまり研究していません – Kenly

0
String question[] = {"a","b","c","d","e"}; 
int count = 0; 
findViewById(R.id.button).setOnClickListener(new OnClickLisetner{ 
if(count<question.lenght()){ 
count++; 
Log.d("Question",question[count]); 
}else{ 
    count=0; 
} 
}); 
0

あなたのコードを見ているしたら、question_numbernextQuestion()またはpreviousQuestion()のいずれかが呼び出されるたびにインクリメントすることができませんでした。これを増やすと、文字列配列を通過する可能性が高くなります。

+0

申し訳ありませんが、私の活動の古いコピーを入れました 私の間違いはonClick機能にあったのですが、私は – Kenly

0

クリックすると、question_numbernextQuestion() previousQuestion()に維持する必要があります。

question_number++nextQuestion()に、question_number--previousQuestion()とする。 XMLでonClick属性の機能のようなものでなければなら

1

これに追従させるためのカウンタを作成する必要があります。

List<String> aList = Arrays.asList(getResources().getStringArray(R.array.questions_array)); 
final ListIterator<String> listIterator = aList.listIterator(); 

protected void nextQuestion() { 
    if (listIterator.hasNext()){ 
       textview.setText(listIterator.next()); 
      } 
    } 

    protected void previousQuestion() { 
    if (listIterator.hasPrevious()){ 
       textview.setText(listIterator.previous()); 
      } 
    } 
関連する問題