我无法弄清楚如何调用start();来自我所制造的类的方法它在同一个包中,它被称为Chronometer,这里是我的类
import java.lang.reflect.Method;
import java.text.DecimalFormat;
import com.example.chrono.Chronometer.OnChronometerTickListener;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class tests extends Activity{
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Chronometer test = new Chronometer(this);
start = (Button) findViewById(R.id.bStart);
start.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
com.example.chrono.Chronometer.start(); }
});
}
}
我在com.example.chrono.Chronometer.start();
错误无法从类型计时器
中对非静态方法start()进行静态引用答案 0 :(得分:4)
您可以使用Chronometer
class:
Chronometer test = new Chronometer(this);
start = (Button) findViewById(R.id.bStart);
start.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// com.example.chrono.Chronometer.start();
test.start();
}
});
答案 1 :(得分:2)
您可以像test.start();
答案 2 :(得分:2)
static
方法(不涉及详细信息)是直接从类调用的方法,例如MyClass.staticMethod();
。您正在尝试调用instance
方法,该方法需要从MyClass的实例调用。在这种情况下,您的方法start不是静态的,而是一个实例方法,应该使用:
test.start();//since, test is an instance of your class.
答案 3 :(得分:0)
public class tests extends Activity implements OnChronometerTickListener {
}
把你这样的课............
答案 4 :(得分:0)
- 使用Composition
访问另一个类的方法。
- 在测试类中创建Chronometer实例并访问start()方法。
<强>例如强>
public class tests extends Activity{
Button start;
Chronometer crono = new Chronometer(); // Instance of Chronometer
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Chronometer test = new Chronometer(this);
start = (Button) findViewById(R.id.bStart);
start.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
crono.start();
}
});
}
}
很少有重要的事情:
- 在班级名称中使用大写字母表示第一个字母,例如..测试
- 确保在类及其方法上使用正确的access modifiers
,以使其对其他类可见