0

我不知道如何调用 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();

错误是无法从 Chronometer 类型对非静态方法 start() 进行静态引用

4

5 回答 5

4

您可以使用类的对象从其他类调用非静态方法Chronometer

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(); 
         } 
    }); 
于 2012-10-29T04:38:21.953 回答
2

你可以像这样调用这个方法test.start();

于 2012-10-29T04:38:57.797 回答
2

方法static(不详述)是直接从类中调用的方法,例如MyClass.staticMethod();. 您正在尝试调用一个instance方法,该方法需要从MyClass的实例中调用。在这种情况下,您的方法 start 不是静态的,而是一个实例方法,应该使用以下方法调用:

test.start();//since, test is an instance of your class.
于 2012-10-29T04:40:43.447 回答
0
public class tests extends Activity implements OnChronometerTickListener {
}

把你的课变成这样............

于 2012-10-29T04:47:38.993 回答
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在类及其方法上使用正确,以使其对其他类可见

于 2012-10-29T04:50:16.220 回答