简体   繁体   English

Android Studio无法解析类中的方法

[英]Android Studio unable to resolve method in class

I am trying to make a basic connect 3 app as part of a course challenge. 我正在尝试制作一个基本的connect 3应用程序,作为课程挑战的一部分。 The problem I am having is that I am unable to access the methods inside the class Players in order to set which buttons have been pressed by which players: Cannot resolve method 'noughtsPlayer' . 我遇到的问题是,我无法访问Players类中的方法来设置哪个玩家按下了哪些按钮: Cannot resolve method 'noughtsPlayer'

I created an instance of Players on the onCreate method and declared it at the top of the script. 我在onCreate方法上创建了Players实例,并在脚本顶部声明了它。 That instance itself is recognised but for some reason the contained methods, noughtsPlayer and crossesPlayer are not. 该实例本身可以识别,但由于某些原因,所包含的方法noughtsPlayercrossesPlayer无法crossesPlayer

MainActivity.java

package com.example.richardcurteis.connect3;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    public boolean noughtsTurn;
    ArrayList board;
    String players;

    public void receiveClick(View view) {
        String buttonPressed = (String) view.getTag();
        board.remove(buttonPressed);

        if (view instanceof Button) {
            Button B = (Button) view;
            B.setText(noughtsTurn ? players.noughtsPlayer() : players.crossesPlayer());
        }

    }

    class Players {
        public String noughtsPlayer() { return "O"; }
        public String crossesPlayer() { return "X"; }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        boolean noughtsTurn = true;
        board = new ArrayList();
        for (int x = 0; x < getBoardSize(); x++) {
            String y = String.valueOf(x);
            board.add(y);
        }
        Players players = new Players();

    }

    public int getBoardSize() {
        int buttonCount = 0;
        TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);

        for (int rowIndex = 0; rowIndex < tableLayout.getChildCount(); rowIndex++) {
            View tableLayoutChild = tableLayout.getChildAt(rowIndex);
            if (tableLayoutChild instanceof TableRow) {
                for (int i = 0; i < ((ViewGroup) tableLayoutChild).getChildCount(); i++) {
                    View view = ((ViewGroup) tableLayoutChild).getChildAt(i);
                    if (view instanceof Button) {
                        buttonCount++;
                    }
                }
            }
        }
        return buttonCount;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

You have global variable String players and local variable Players players . 您具有全局变量String players和局部变量Players players This is problem. 这是问题。 And class String doesn't have those methods. 而且String类没有这些方法。 To solve this problem change String players; 要解决此问题,请更改String players; to Players players; Players players; and Players players = new Players(); Players players = new Players(); to players = new Players(); players = new Players();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM