我有MainActivity.class有一些方法。 以下是我想在应用启动时调用的方法:
public void loadGame(View view) {
SharedPreferences loadGame = getSharedPreferences(PREFS, MODE_PRIVATE);
cashView.setText("cash: " + String.valueOf(cash));
levelView.setText("level: " + String.valueOf(level));
}
所以我尝试在onCreate方法中输入以下内容:
loadGame();
但是我收到一个错误: 主要活动中的 (查看) 无法应用于()
对于这样一个愚蠢的问题很抱歉,但我不明白。 我认为onCreate和其他活动方法类似于Java中的main方法(但它们不是),但我仍然可以轻松地为Button onClick分配方法。为什么我不能在应用程序启动时调用方法?任何解决方案?
upd:MainActivity代码:
public class MainActivity extends AppCompatActivity {
private int cash = 1000;
private int level = 1;
private TextView cashView;
private TextView levelView;
public static final String PREFS = "MySavedGameFile";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//the compiler says it cannot resolve symbol 'view'
// loadGame(view);
//I need to call the method anyway
cashView = (TextView) findViewById(R.id.cashView);
levelView = (TextView) findViewById(R.id.levelView);
}
public void loadGame(View view) {
SharedPreferences loadGame = getSharedPreferences(PREFS, MODE_PRIVATE);
cash = loadGame.getInt("savedCash", 1000);
level = loadGame.getInt("savedLevel", 1);
cashView.setText("Cash: " + String.valueOf(cash));
levelView.setText("Level: " + String.valueOf(level));
答案 0 :(得分:1)
您的代码的问题是您正在定义一个带签名的方法,但使用另一个方法来调用它。
如果您定义方法public void loadGame(View view)
然后你需要像loadGame(view)
如果你做loadGame();
这样的事情,那么编译器就会疯狂,因为他找不到那个方法(没有参数的方法......)
replace将视图(无论是什么)添加到方法调用
你可以替换方法public void loadGame(View view) {
对于这个public void loadGame( ) {
,因为你没有在该方法中使用任何视图,并且在oncreate中没有视图(除了控件cashView和levelView,但那些是Activity字段...)声明。
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cashView = (TextView) findViewById(R.id.cashView);
levelView = (TextView) findViewById(R.id.levelView);
loadGame( );
}
public void loadGame() {
SharedPreferences loadGame = getSharedPreferences(PREFS, MODE_PRIVATE);
cash = loadGame.getInt("savedCash", 1000);
level = loadGame.getInt("savedLevel", 1);
cashView.setText("Cash: " + String.valueOf(cash));
levelView.setText("Level: " + String.valueOf(level));
}
答案 1 :(得分:0)
您需要将View对象作为参数传递给loadGame()
方法。考虑到您不在方法中使用view
,而是可以将其作为参数删除,或者创建一个没有参数的同名新方法。