Генерация случайного предложения при нажатии кнопки, код выглядит правильно, но не работает - PullRequest
0 голосов
/ 20 июля 2010

Я не уверен, что здесь не так, все, что я хочу сделать, это случайно выбрать элемент из моего массива. Что похоже на случайное предложение. Затем создайте еще один после нажатия кнопки. Весь мой код выглядит хорошо для меня, но он вызывает сбой, когда я нажимаю кнопку. есть идеи?

package com.my.package;


import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

import android.view.View.OnClickListener;

public class Randomsentence extends Activity implements OnClickListener{


    private String[] myString;
    private static final Random rgenerator = new Random();
    private TextView tv;



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    Resources res = getResources();

    myString = res.getStringArray(R.array.myArray); 

    String q = myString[rgenerator.nextInt(myString.length)];

    TextView tv = (TextView) findViewById(R.id.text1);
    tv.setText(q);

    View nextButton = findViewById(R.id.next_button);
    nextButton.setOnClickListener(this);

}

    @Override
    public void onClick(View v) {
    switch (v.getId()) {
    case R.id.next_button:
        tv.setText(myString[rgenerator.nextInt(myString.length)]);
        break;
    }

}
    @Override
    public boolean onCreateOptionsMenu (Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu3, menu);
        return true;
    }

@Override
public boolean onOptionsItemSelected (MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu:
            startActivity(new Intent(this, Main.class));
            return true;
        case R.id.startnhie:
            startActivity(new Intent(this, startnhie.class));
            return true;

}
return false;
    }



}

1 Ответ

3 голосов
/ 20 июля 2010

В вашем onCreate(), измените

TextView tv = (TextView) findViewById(R.id.text1);

до

tv = (TextView) findViewById(R.id.text1);

, поскольку вы уже объявили TextView tv в качестве переменной экземпляра.

...