Android 从数组单击字符串

Android 从数组单击字符串,android,string,random,onclick,Android,String,Random,Onclick,我想制作一个应用程序,在字符串数组中包含一长串字符串。 我想做的是让一个按钮在单击按钮时显示一个随机字符串。 有人能帮忙吗。 谢谢 这是我的密码: 公共类页面片段扩展了片段{ public PagesFragment(){} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView

我想制作一个应用程序,在字符串数组中包含一长串字符串。 我想做的是让一个按钮在单击按钮时显示一个随机字符串。 有人能帮忙吗。 谢谢

这是我的密码:

公共类页面片段扩展了片段{

public PagesFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_pages, container, false);
    TextView txt = (TextView) rootView.findViewById(R.id.textView1);
    Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/pagefonts.ttf");
    txt.setTypeface(font);
    TextView tv = (TextView) rootView.findViewById(R.id.jamais);
    Button btn = (Button)rootView.findViewById(R.id.next);

    btn.setOnClickListener(new OnClickListener(){


        @Override
        public void onClick(View v) {
            String[] myString = getResources().getStringArray(R.array.je_nai_jamais); 
            tv.setText(myString[rgenerator.nextInt(myString.length)]);
        }
    });
    return rootView;
}
}

我这里有点不对劲

tv.setText(myString[rgenerator.nextInt(myString.length)])

这样就可以了:

public void onClick(View v) {
    int i = Math.floor(Math.random() * strings.length);
    ((Button) v).setText(strings[i]);
}

其中
strings
是字符串数组。

首先生成一个随机值,其范围为字符串的0到长度。然后对应随机数选择字符串元素

Random rnd = new Random();
int myValue = r.nextInt(max-offset)+offset;
yourTextView.setText(yourStringArray[myValue]);

如果要从要执行的资源中获取字符串数组

String[] args = getResources().getStringArray(R.array.yourarray'sname);

Button button = (Button)findViewById(yourbutton'sid);
button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
int number = Math.ceil(Math.random() * args.length);
TextView tv = (TextView)findViewById(yourtextview'sid);    
tv.setText(args[number]);
});

谢谢,但是你的代码都不适合我,所以我试了一下,这一个适合我。 见:

}


这可能对某些人有帮助

您当前的代码是什么??请在此提供TextView txt=(TextView)rootView.findViewById(R.id.textView1);Typeface font=Typeface.createFromAsset(getActivity().getAssets(),“fonts/pagefonts.ttf”);设置字体(字体);Button Button=(Button)rootView.findViewById(R.id.button1);setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){int number=Math.ceil(Math.random()*args.length);TextView tv=(TextView)rootView.findViewById(R.id.jamais);tv.setText(args[number]);});返回rootView;}}这会给您一个数组索引越界异常。使用
Math.floor
代替public void onClick(视图v){int i=Math.floor(Math.random()*je_nai_jamais.length);((按钮)v.setText(je_nai_jamais[i]);});返回rootView;}}
Button next;
public FragmentJeNaiJamais(){}
Random rgenerator = new Random();
Vibrator myVibrator;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_jamais, container, false);
    TextView txt = (TextView) rootView.findViewById(R.id.textView1);
    Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/pagefonts.ttf");
    txt.setTypeface(font);

    myVibrator = (Vibrator)getActivity().getSystemService(Context.VIBRATOR_SERVICE);
    final TextView iv = (TextView) rootView.findViewById(R.id.jamais);

    next = (Button)rootView.findViewById(R.id.next);
    next.setOnClickListener(new OnClickListener() {

         public void onClick(View V) {

             myVibrator.vibrate(70);
             String[] args = getResources().getStringArray(R.array.je_nai_jamais);
             iv.setText(args[new Random().nextInt(args.length)]);
             Typeface fonts = Typeface.createFromAsset(getActivity().getAssets(), "fonts/artbrush.ttf");
             iv.setTypeface(fonts);


         }
    });
    return rootView;`
}