Java 无法在文本视图数组中应用字符串值

Java 无法在文本视图数组中应用字符串值,java,android,variables,Java,Android,Variables,在if(saveInstanceState!=null)中,我试图保存whowen()方法在文本视图中对文本所做的更改,以便在用户旋转手机时将其保存并恢复到旋转前的状态,但它显示了一个错误,即TextView中的getText()无法应用于(java.lang.string),我尝试添加.toString()但它不起作用 public class Multiplayer extends AppCompatActivity { private TextView mTicTacTextVie

在if(saveInstanceState!=null)中,我试图保存whowen()方法在文本视图中对文本所做的更改,以便在用户旋转手机时将其保存并恢复到旋转前的状态,但它显示了一个错误,即TextView中的getText()无法应用于(java.lang.string),我尝试添加.toString()但它不起作用

public class Multiplayer extends AppCompatActivity {
    private TextView mTicTacTextViews [] = new TextView[9];
    private Button mButtonX;
    private Button mButtonO;
    private Button mResult;
    private int mcheckAllButtonsClicked =0;
    private String TEXT_VIEW_VALUES_KEY = "VALUES OF TEXT VIEW'S";
    private String mTextviewValues [] = new String[9];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(savedInstanceState != null)
        {
            String values[]=savedInstanceState.getStringArray(TEXT_VIEW_VALUES_KEY);
            for (int i=0;i<values.length;i++ ) {
                mTextviewValues[i]=values[i];
                mTicTacTextViews[i].getText(mTextviewValues[i]);
            }

        }

        setContentView(R.layout.activity_tic_tac);

        mTicTacTextViews[0] = (TextView) findViewById(R.id.tic_tac_one);
        mTicTacTextViews[0].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

               ifPressed_XButton(mTicTacTextViews[0]);
                ifPressed_OButton(mTicTacTextViews[0]);
                mcheckAllButtonsClicked+=1;
            }
        });

        mTicTacTextViews[1] = (TextView) findViewById(R.id.tic_tac_two);
        mTicTacTextViews[1].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[1]);
                ifPressed_OButton(mTicTacTextViews[1]);
                mcheckAllButtonsClicked+=1;
            }
        });

        mTicTacTextViews[2] = (TextView) findViewById(R.id.tic_tac_three);
        mTicTacTextViews[2].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[2]);
                ifPressed_OButton(mTicTacTextViews[2]);
                mcheckAllButtonsClicked+=1;
            }
        });

        mTicTacTextViews[3] = (TextView) findViewById(R.id.tic_tac_four);
        mTicTacTextViews[3].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[3]);
                ifPressed_OButton(mTicTacTextViews[3]);
                mcheckAllButtonsClicked+=1;
            }
        });
        mTicTacTextViews[4] = (TextView) findViewById(R.id.tic_tac_five);
        mTicTacTextViews[4].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[4]);
                ifPressed_OButton(mTicTacTextViews[4]);
                mcheckAllButtonsClicked+=1;
            }
        });

        mTicTacTextViews[5] = (TextView) findViewById(R.id.tic_tac_six);
        mTicTacTextViews[5].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[5]);
                ifPressed_OButton(mTicTacTextViews[5]);
                mcheckAllButtonsClicked+=1;
            }
        });

        mTicTacTextViews[6] = (TextView) findViewById(R.id.tic_tac_seven);
        mTicTacTextViews[6].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[6]);
                ifPressed_OButton(mTicTacTextViews[6]);
                mcheckAllButtonsClicked+=1;
            }
        });

        mTicTacTextViews[7] = (TextView) findViewById(R.id.tic_tac_eight);
        mTicTacTextViews[7].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[7]);
                ifPressed_OButton(mTicTacTextViews[7]);
                mcheckAllButtonsClicked+=1;
            }
        });

        mTicTacTextViews[8] = (TextView) findViewById(R.id.tic_tac_nine);
        mTicTacTextViews[8].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ifPressed_XButton(mTicTacTextViews[8]);
                ifPressed_OButton(mTicTacTextViews[8]);
                mcheckAllButtonsClicked+=1;

            }
        });



        mButtonX = (Button) findViewById(R.id.x_button);
        mButtonX.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mUserPressed_XButton =true;
            }
        });

        mButtonO = (Button) findViewById(R.id.o_button);
        mButtonO.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mUserPressed_OButton =true;

            }
        });

        mTextviewValues [0]=mTicTacTextViews[0].getText().toString();
        mTextviewValues [1]=mTicTacTextViews[1].getText().toString();
        mTextviewValues [2]=mTicTacTextViews[2].getText().toString();
        mTextviewValues [3]=mTicTacTextViews[3].getText().toString();
        mTextviewValues [4]=mTicTacTextViews[4].getText().toString();
        mTextviewValues [5]=mTicTacTextViews[5].getText().toString();
        mTextviewValues [6]=mTicTacTextViews[6].getText().toString();
        mTextviewValues [7]=mTicTacTextViews[7].getText().toString();
        mTextviewValues [8]=mTicTacTextViews[8].getText().toString();

        mResult = (Button) findViewById(R.id.result_button);
        mResult.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                whoWon();
            }
        });
    }



    private void whoWon ()
    {
        mTextviewValues [0]=mTicTacTextViews[0].getText().toString();
        mTextviewValues [1]=mTicTacTextViews[1].getText().toString();
        mTextviewValues [2]=mTicTacTextViews[2].getText().toString();
        mTextviewValues [3]=mTicTacTextViews[3].getText().toString();
        mTextviewValues [4]=mTicTacTextViews[4].getText().toString();
        mTextviewValues [5]=mTicTacTextViews[5].getText().toString();
        mTextviewValues [6]=mTicTacTextViews[6].getText().toString();
        mTextviewValues [7]=mTicTacTextViews[7].getText().toString();
        mTextviewValues [8]=mTicTacTextViews[8].getText().toString();

        if(mTextviewValues[0].equals(mTextviewValues[1]) & mTextviewValues[1].equals(mTextviewValues[2]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }
        else if (mTextviewValues[1].equals(mTextviewValues[4]) & mTextviewValues[4].equals(mTextviewValues[8]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }
        else if (mTextviewValues[0].equals(mTextviewValues[3]) & mTextviewValues[3].equals(mTextviewValues[6]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }
        else if (mTextviewValues[1].equals(mTextviewValues[4]) & mTextviewValues[4].equals(mTextviewValues[7]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }
        else if (mTextviewValues[2].equals(mTextviewValues[5]) & mTextviewValues[5].equals(mTextviewValues[8]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }
        else if (mTextviewValues[2].equals(mTextviewValues[4]) & mTextviewValues[4].equals(mTextviewValues[6]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }

        else if (mTextviewValues[2].equals(mTextviewValues[4]) & mTextviewValues[4].equals(mTextviewValues[6]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }
        else if (mTextviewValues[6].equals(mTextviewValues[7]) & mTextviewValues[7].equals(mTextviewValues[8]))
        {
            Toast.makeText(this,"Someone won",Toast.LENGTH_SHORT).show();
        }
        else Log.i("error" , "whowon didn't work");

    }
    @Override
    protected void  onSaveInstanceState(Bundle bundle)
    {
        super.onSaveInstanceState(bundle);
        bundle.putStringArray(TEXT_VIEW_VALUES_KEY,mTextviewValues);

    }
}
公共类多人游戏扩展AppCompative活动{
私有文本视图mTicTacTextViews[]=新文本视图[9];
私人按钮mButtonX;
私人按钮;
专用按钮mResult;
private int mcheckalbuttonsclicked=0;
私有字符串TEXT\u VIEW\u VALUES\u KEY=“文本视图的值”;
私有字符串mTextviewValues[]=新字符串[9];
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
如果(savedInstanceState!=null)
{
字符串值[]=savedInstanceState.getStringArray(文本\视图\值\键);

for(int i=0;i
getText()
不接受参数。
mTicTacTextViews[i]。getText()
返回视图中的文本。是否尝试在视图中设置文本?如果是,则需要
setText(CharSequence)
,而不是
CharSequence getText()

你能去掉多余的代码吗?一个问题建议在空对象引用上使用.app崩溃,错误为“尝试调用虚拟方法”void android.widget.TextView.setText(java.lang.CharSequence)”这意味着您的TextView变量为null。这是有意义的,因为您直到(非常、非常长)方法的下一步才填充它。不,我在onCreate()中给mTextViewValues[]它文本值的不仅仅是whowen()Yes,问题是
mTicTacTextViews[I]
为null。如果(savedInstanceState!=null),请移动
setOnClickListener附近,你应该会过得更好。此外,如果你将
onCreate
分解为多个方法,你会发现这会容易得多。比如
createTextView(id)
populateTextView(id)
createXButton
createOButton
setupListener
。这样,在创建视图之前,您会发现更容易找到填充视图的位置。