Java 安卓如何将类从另一个文件访问到MainActivity
我创建了一个单独的java类,名为SetIP.java,只需一个简单的打印: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
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类?@SammyTpackage com.myname.appnameSetIP
开头的code>强烈建议这两个类都在默认包中。如果这是真的,则不需要在MainActivity
中导入SetIP
。但是,直接在MainActivity
的主体中调用SetIP.hello()
,这样肯定会导致编译器错误。它应该在方法内部调用,比如public void onCreate(Bundle savedInstanceState){setip.hello();}
您的setip.hello()
不在MainActivity
的方法中。您是否在MainActivity的顶部导入了setip类?@SammyTpackage 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
}