Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓如何将类从另一个文件访问到MainActivity_Java_Android - Fatal编程技术网

Java 安卓如何将类从另一个文件访问到MainActivity

Java 安卓如何将类从另一个文件访问到MainActivity,java,android,Java,Android,我创建了一个单独的java类,名为SetIP.java,只需一个简单的打印: package com.myname.appname; import android.util.Log; public class SetIP { public void hello(){ Log.d("System", "Hello World!"); } } 在main活动中,我尝试通过以下方式调用它: public class MainActivity extends Ap

我创建了一个单独的java类,名为SetIP.java,只需一个简单的打印:

package com.myname.appname;

import android.util.Log;

public class SetIP {

    public void hello(){
        Log.d("System", "Hello World!");
    }
}
在main活动中,我尝试通过以下方式调用它:

public class MainActivity extends AppCompatActivity {

    SetIP setip = new SetIP();
    setip.hello();
   // OnCreate and Stuff
}

但错误表示无法解析符号“Hello”。请帮忙。谢谢

您需要在onCreate方法中调用它

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SetIP setip = new SetIP();
    setip.hello();
}

您需要在onCreate方法中调用它

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SetIP setip = new SetIP();
    setip.hello();
}

您不应该像现在调用的那样动态调用任何类的对象的方法,因为您告诉您的
//OnCreate and Stuff
低于对象的方法调用

它必须在构造函数或某些方法中,如这里所示

SetIP setip = new SetIP();
@Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setip.hello();
   }

@Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      SetIP setip = new SetIP();
      setip.hello();
   }

您不应该像现在调用的那样动态调用任何类的对象的方法,因为您告诉您的
//OnCreate and Stuff
低于对象的方法调用

它必须在构造函数或某些方法中,如这里所示

SetIP setip = new SetIP();
@Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setip.hello();
   }

@Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      SetIP setip = new SetIP();
      setip.hello();
   }

可以将SetIP实例化为MainActivity的全局变量,但调用该函数仍应驻留在MainActivity的函数中。一个例子是将其放入onCreate活动中,如下所示

public class MainActivity extends AppCompatActivity {

    SetIP setip = new SetIP();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setip.hello();
    }

    // Other Stuff
}

可以将SetIP实例化为MainActivity的全局变量,但调用该函数仍应驻留在MainActivity的函数中。一个例子是将其放入onCreate活动中,如下所示

public class MainActivity extends AppCompatActivity {

    SetIP setip = new SetIP();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setip.hello();
    }

    // Other Stuff
}

您只需要更改方法是静态的

public class SetIP {    
    public static void hello(){
        Log.d("System", "Hello World!");
    }
}

尝试这项工作。

您只需要更改方法是静态的

public class SetIP {    
    public static void hello(){
        Log.d("System", "Hello World!");
    }
}
public class MainActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      SetIP setip = new SetIP();
      setip.hello();
   }

   // Other methods
} 

尝试这项工作。

您的
setip.hello()
不在
MainActivity
的方法中。您是否在MainActivity的顶部导入了setip类?@SammyT
package com.myname.appnameSetIP
开头的code>强烈建议这两个类都在默认包中。如果这是真的,则不需要在
MainActivity
中导入
SetIP
。但是,直接在
MainActivity
的主体中调用
SetIP.hello()
,这样肯定会导致编译器错误。它应该在方法内部调用,比如
public void onCreate(Bundle savedInstanceState){setip.hello();}
您的
setip.hello()
不在
MainActivity
的方法中。您是否在MainActivity的顶部导入了setip类?@SammyT
package com.myname.appnameSetIP
开头的code>强烈建议这两个类都在默认包中。如果这是真的,则不需要在
MainActivity
中导入
SetIP
。但是,直接在
MainActivity
的主体中调用
SetIP.hello()
,这样肯定会导致编译器错误。它应该在一个方法中调用,比如
public void onCreate(Bundle savedInstanceState){setip.hello();}
您自己尝试过吗?(提示:
hello()
确实可以是一个静态方法,但它不会解决问题)SetIP.hello()试试这个,不需要创建类的对象,您可以访问直接方法。是的,您可以调用静态方法,而无需实例化对象。再说一遍,这并不能解决问题。您仍然不能像这样从类主体调用
SetIP.hello()
,您需要从方法调用它。请接受你自己的建议,试一下。你自己试过吗?(提示:
hello()
确实可以是一个静态方法,但它不会解决问题)SetIP.hello()试试这个,不需要创建类的对象,您可以访问直接方法。是的,您可以调用静态方法,而无需实例化对象。再说一遍,这并不能解决问题。您仍然不能像这样从类主体调用
SetIP.hello()
,您需要从方法调用它。请接受你自己的建议,并尝试一下。非常感谢。。太有道理了!谢谢。。太有道理了!
public class MainActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      SetIP setip = new SetIP();
      setip.hello();
   }

   // Other methods
}