簡體   English   中英

如何從另一個類調用方法?

[英]How can I call a method from another class?

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

您可以使用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(); 
         } 
    }); 

您可以像test.start();這樣調用此方法test.start();

static方法(無需贅述)是直接從類中調用的方法,例如MyClass.staticMethod(); 您正在嘗試調用instance方法,該方法需要從MyClass的實例中調用。 在這種情況下,您的方法開始不是靜態的,而是實例方法,應使用以下方法調用:

test.start();//since, test is an instance of your class.
public class tests extends Activity implements OnChronometerTickListener {
}

像這樣把你的課.........

-使用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 ,以使其對其他類可見

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM