我试图从另一个类中的一个类获取全局变量,但它只是一个空字符串。
class Abfahrtsmonitor : AppCompatActivity() {
// Initializing an empty ArrayList to be filled with animals
val Haltestellen: ArrayList<String> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val Haltestellenname = MapsAnzeigeActivity().haltestellen_name
}
}
是我想要的。我的班级MapsAnzeigeActivity
看起来大致如下:
class MapsAnzeigeActivity : AppCompatActivity(), OnMapReadyCallback {
var haltestellen_name = ""
override fun onCreate(savedInstanceState: Bundle?) {
// ....
}
fun changeHaltestellen() {
haltestellen_name = "new"
}
}
当您运行此代码时:
val Haltestellenname = MapsAnzeigeActivity().haltestellen_name
它将创建一个新的MapsAnzeigeActivity
实例,因为haltestellen_name
的默认值是""
,为什么你得到一个空字符串。
要创建全局变量(在Java中称为静态变量),您应该使用Companion Object。
class MapsAnzeigeActivity : AppCompatActivity(), OnMapReadyCallback {
companion object {
var haltestellen_name: String
}
}
class Abfahrtsmonitor : AppCompatActivity() {
// Initializing an empty ArrayList to be filled with animals
val Haltestellen: ArrayList<String> = ArrayList()
val Haltestellenname = MapsAnzeigeActivity.haltestellen_name
}
试试这个:
class MapsAnzeigeActivity : AppCompatActivity(), OnMapReadyCallback {
companion object {
var haltestellen_name: String
}
}
class Abfahrtsmonitor : AppCompatActivity() {
// Initializing an empty ArrayList to be filled with animals
val Haltestellen: ArrayList<String> = ArrayList()
val Haltestellenname = MapsAnzeigeActivity.haltestellen_name
}
您有多种选择:
首先,您可以拥有这样的单例类,并在需要时获取数据。
public class MyData {
private ArrayList<String> data;
private static MyData INSTANCE = new MyData();
private MyData() {
}
public static MyData getInstance() {
return INSTANCE;
}
public ArrayList<String> getData() {
return this.data;
}
}
当您想要获取数据时,请尝试以下代码:
MyData.getInstance().getData()
它会将您的数据保存在内存中,当您关闭应用程序时,您的数据将会丢失。
另一个选项是将数据保存在SharedPrefs或Sqlite中,即使应用程序关闭,您也可以获得数据。
另一种简单的方法是让你的数据像这样静态。
public static ArrayList<String> data = new ArrayList();