【发布时间】:2016-05-17 11:36:42
【问题描述】:
我对 Android Studio 和 Java 有点陌生,所以请多多包涵。
我正在制作一个应用程序,您可以在其中通过飞镖游戏记录分数。我有一个 switch 语句,用于单击哪个按钮。当按下回车按钮时,我希望它在使用一个参数(即输入)时转到另一个 Java 文件。显然我同时使用静态和非静态方法,这是错误的。我该如何解决这个问题?
这是我的第一个 java 文件,来自屏幕的文件:
package com.example.jeroe.darts;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import com.example.jeroe.darts.Score;
public class MatchScreen extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_match_screen);
DefineEventHandlers();
}
public void onClick(View v) {
TextView InputTrue = (TextView) findViewById(R.id.TextviewInput);
TextView editTextScore = (TextView) findViewById(R.id.editTextScore);
switch (v.getId()) {
case R.id.TextViewInnerbull:
editTextScore.append("50");
break;
case R.id.TextViewOuterBull:
editTextScore.append("25");
break;
case R.id.TextViewClear:
editTextScore.setText("");
break;
case R.id.TextViewEnter:
Score.enter(editTextScore.getText());
// here i get an error:
//non-static method 'enter(charsequence)' cannot be referenced from a static context
}
}
public void DefineEventHandlers()
{
// declare textviews Player 1
TextView TextViewPL1Score = (TextView) findViewById(R.id.TextViewPL1Score);
TextView PL1Dart1 = (TextView) findViewById(R.id.PL1Dart1);
TextView PL1Dart2 = (TextView) findViewById(R.id.PL1Dart2);
TextView PL1Dart3 = (TextView) findViewById(R.id.PL1Dart3);
// declare textviews Player 2
TextView TextViewPL2Score = (TextView) findViewById(R.id.TextViewPL2Score);
TextView PL2Dart1 = (TextView) findViewById(R.id.PL2Dart1);
TextView PL2Dart2 = (TextView) findViewById(R.id.PL2Dart2);
TextView PL2Dart3 = (TextView) findViewById(R.id.PL2Dart3);
//T20, bulls
TextView TextViewOuterBull = (TextView) findViewById(R.id.TextViewOuterBull);
TextViewOuterBull.setOnClickListener(this);
TextView TextViewInnerBull = (TextView) findViewById(R.id.TextViewInnerbull);
TextViewInnerBull.setOnClickListener(this);
//Enter, backspace
TextView TextViewClear = (TextView) findViewById(R.id.TextViewClear);
TextViewClear.setOnClickListener(this);
TextView TextViewEnter = (TextView) findViewById(R.id.TextViewEnter);
TextViewEnter.setOnClickListener(this);
}
} //end of the file
然后我需要它转到另一个名为 score.java 的文件。这里我希望它保留分数和其他一些东西:
package com.example.jeroe.darts;
public class Score {
int PL1Score = 501;
boolean player1 = true;
public void enter(CharSequence input) {
int IntInput = InputConverter(input);
if (player1 == true) //de input is = player 1
{
// do something
}
}
public int InputConverter(CharSequence input) {
int Input = Integer.parseInt(input.toString());
return Input;
}
}
我该如何解决这个问题?
【问题讨论】:
-
@Gavriel - 找到它,搜索 -
Score.enter(editTextScore.getText()); -
我建议为每个按钮创建单独的
onClick()方法,而不是一个带有巨大switch语句的onClick()方法。当然,当你创建多个onClick()方法时,它们必须有不同的名称。 -
另外,我建议您对创建对象实例和
static成员进行一些研究。互联网上有很多关于这两者的信息。
标签: java android android-studio static access-modifiers