2016-06-13 17 views
-1

私のコードにエラーはありませんが、表示するランダムな文字列は表示されません。私はフラグメントがロードするたびに異なる文字列を持つことを望みます。私は私の質問を変更しました。ジャワ。ランダムジェネレータ文字列を表示

question.java

 import android.content.Context; 
     import android.content.res.Resources; 
     import android.net.Uri; 
     import android.util.Log; 
     import android.os.Bundle; 
     import android.support.v4.app.Fragment; 
     import android.view.LayoutInflater; 
     import android.view.View; 
     import android.view.ViewGroup; 
     import android.widget.TextView; 




     import java.util.Random; 


     public class question extends Fragment { 




     private static final String TAG = MainActivity.class.getSimpleName(); 

     private OnFragmentInteractionListener mListener; 
     //public randomQuestion t1 = new randomQuestion(); 

     private String[] myQuestions; 
     private static final Random random = new Random(); 
     private TextView question; 




public question() { 
    // Required empty public constructor 
} 




@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    TextView question = (TextView)getView().findViewById(R.id.question); 
    EditText answere = (EditText)getView().findViewById(R.id.enterTxt); 

    Resources res = getResources(); 
    myQuestions = res.getStringArray(R.array.myQuestions); 
    String q = myQuestions[new Random().nextInt(myQuestions.length)]; 
    question.setText(q); 


} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_question, container, false); 
    // return inflater.inflate(R.layout.fragment_question, container, false); 
    question = (TextView) rootView.findViewById(R.id.question); 
    question.setText(myQuestions[random.nextInt(myQuestions.length)]); 
    return rootView; 
} 

// TODO: Rename method, update argument and hook method into UI event 
public void onButtonPressed(Uri uri) { 
    if (mListener != null) { 
     mListener.onFragmentInteraction(uri); 
    } 
} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof OnFragmentInteractionListener) { 
     mListener = (OnFragmentInteractionListener) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
    } 

} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    mListener = null; 
} 


public interface OnFragmentInteractionListener { 
    // TODO: Update argument type and name 
    void onFragmentInteraction(Uri uri); 
    } 
    } 

array.xml

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <string-array name="myQuestions"> 
     <item> String 1</item> 
     <item>String 2</item> 
     <item>String 3</item> 
     <item> String 4</item> 
     <item> String 5</item> 
    </string-array> 
    </resources> 

私はそれが赤くなりフラグメントを開いたとき、これはlogcatにアップになります。

6月13日10:50:53.653 13733から13784/com.theneworange.lock E /表面:getSlotFromBufferLocked:不明バッファ:0xaa971570

のstrings.xml

 <resources> 
    <string name="app_name">"App "</string> 
    <string name="turn_on">Turn On</string> 
    <string name="turn_off">Turn Off</string> 
    <string name="to_turn_on_press_turn_on_button">To turn on press Turn On  button</string> 
    <string name="to_turn_off_press_turn_off_button">To turn off press Turn  Off button</string> 

<string-array name="myQuestions"> 
    <item> String 1</item> 
    <item>String 2</item> 
    <item>String 3</item> 
    <item> String 4</item> 
    <item> String 5</item> 
</string-array> 

+0

コードは不完全です。変数を宣言した場所やそのようなことを私たちが見るのは難しいです。関係するすべてのコンストラクトを確認できることを確認してください。 –

+0

XMLファイルを入れるのを忘れてしまった。 –

+0

私はそれが修正が必要な 'question.java'だと思う! ; p –

答えて

1

必要性この行をonCreateViewに移動するには、クラスレベルで取得するビューがないためです。

TextView question = (TextView)getView().findViewById(R.id.question); 

したがって、フィールドを修正してください。そう

private String[] myQuestions; 
private static final Random random = new Random(); 
private TextView question; 

ようなものは次に、

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_question, container, false); 
    question = (TextView) rootView.findViewById(R.id.question); 
    question.setText(myQuestions[random.nextInt(myQuestions.length)]; 
    return rootView; 
} 
+0

私は@ cricket_007を試しましたが、同じエラーが発生しています。言葉のない空白の画面。上記のコードを投稿します。 –

+0

Hmm。それは変だ。ここでは少なくとも配列をstrings.xmlに配置する必要がありますhttps://developer.android.com/guide/topics/resources/string-resource.html#StringArray –

+0

array.xmlという別のリソースファイルを作成しましたそれが原因でなければならない。 –

関連する問題