如何从另一种方法
问题描述:
我试图打电话outwith的onCreate方法的线程的onCreate内调用的方法。但是,它表示该方法无法解决。我知道该方法不能在onCreate线程内,所以你如何从中调用一个方法。这是我的课程代码。如何从另一种方法
package com.alarm.mobilegame;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class startGames extends MainActivity {
public void additionCalc() {
int Min = 1;
int Max = 99;
int a = Min + (int)Math.random()*(Max-Min);
int b = Min + (int)Math.random()*(Max-Min);
int c = (int) a + b;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_game1);
Button buttonMathStart = (Button) findViewById(R.id.button1);
buttonMathStart.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView addquestion;
TextView subquestion;
TextView divquestion;
TextView mulquestion;
addition.calc();
addquestion = (TextView) findViewById(R.id.textView1);
addquestion.setText("" + a, b);
subquestion = (TextView) findViewById(R.id.textView2);
subquestion.setText("sub");
divquestion = (TextView) findViewById(R.id.textView3);
divquestion.setText("div");
mulquestion = (TextView) findViewById(R.id.textView4);
mulquestion.setText("mul");
}});
}
}
答
你调用一个方法从的onCreate这样的:
例子:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example);
myMethod(); //Any parameters you need in the method can be passed through the parentheses
}
myMethod(){
//Do stuff in here
}
在你的情况,你应该把这个线在你的onCreate()来调用方法:
additionCalc();
答
有许多问题 - 第一个问题是您没有调用您正确创建的方法。
变化
addition.calc();
to additionCalc();
调用该方法时会做什么为你。它会在方法中添加数字,但变量是局部的方法,所以没有什么会发生
onCreate
。-
要使
additionCalc()
有用,请使用return
进行加法计算。例如:public int additionCalc() { // not void anymore - it returns an int int Min = 1; int Max = 99; int a = Min + (int)Math.random()*(Max-Min); int b = Min + (int)Math.random()*(Max-Min); int c = (int) a + b; return c; // return the sum }
使用的方法,而不是
addquestion.setText("" + a, b);
可以使用addquestion.setText("" + additionCalc());
,它会设置文本是总和。如果要在
onCreate
方法中使用a
和/或b
,则必须在该方法中声明它们。
不应该addition.calc()be additionCalc()? – SoulRayder
@Andrew Stewart,Gautham是正确的。 –
你的代码是怎么回事?大声笑什么是'addquestion.setText(“”+ a,b);'? –