如何在不同的java文件中使用setter和getter
这是我在ShoppingListName.java中的setters和getter如何在不同的java文件中使用setter和getter,java,android,Java,Android,这是我在ShoppingListName.java中的setters和getter public class ShoppingListName { private String shoppingListName; public String getShoppingListName() { return shoppingListName; } public void setShoppingListName(String shoppingListN
public class ShoppingListName {
private String shoppingListName;
public String getShoppingListName() {
return shoppingListName;
}
public void setShoppingListName(String shoppingListName) {
this.shoppingListName = shoppingListName;
}
}
我是在MainMenu.java中完成的
ShoppingListName shoppingList = new ShoppingListName();
shoppingList.setShoppingListName(inputListName.getText().toString());
我试图将字符串传递到另一个java文件(CreateList.java)
我该怎么做
我试过这个
ShoppingListName shoppingList = new ShoppingListName();
Log.e("ShoppingListName", "" + shoppingList.getShoppingListName());
但是很明显,我收到了一个空返回。您可以将getter和setter方法设置为static,然后您使用的最后一个调用就可以工作了。然后,如果流是在set方法之后调用get方法,则不必显式地传递任何内容
因此,有效地,您可以在任意多个其他类之间共享单个实例
我试图将字符串传递到另一个java文件
(CreateList.java)我该怎么做
这里您的意思大概是希望将字符串
传递给类CreateList
中定义的方法
因此,只需在CreateList
上创建一个方法,该方法接受字符串,并执行它需要执行的任何操作
public class CreateList {
public static void doSomething(String listName) {
//do whatever you want with it
}
}
作为旁注,您的类ShoppingListName似乎没有对任何有意义的真实世界对象建模。把它改为:
public class ShoppingList {
List<ShoppingItems> items;
String listName;
..
..
}
公共类购物清单{
清单项目;
字符串列表名;
..
..
}
这同样适用于CreateList
。此对象的主要职责是什么?ShoppingListName
主菜单中的类实例。java
与CreateList.java
中的实例不同。显然,CreateList.java
中的新实例无法获得您在main menu.java
中的实例中设置的值。您必须以某种方式将实例从main menu.java
传递到CreateList.java
,或者在两个类之间共享同一个实例。*Getter Setter Class
}
设置值
ShoppingListName.setShoppingListName(“需要设置的值”)
获取值
字符串值=ShoppingListName.getShoppingListName()*
更新
正如@laalto在评论中提到的那样。使用静态参数分离pojo类以存储一定范围的数据并不是完美的解决方案
根据我的说法,如果您想长时间保存数据,请将其保存在共享首选项中,否则请在应用程序类中创建一个非静态变量,并像这样使用
public class HelloApplication extends Application {
private int globalVariable=1;
public int getGlobalVariable() {
return globalVariable;
}
public void setGlobalVariable(int globalVariable) {
this.globalVariable = globalVariable;
}
@Override
public void onCreate() {
//reinitialize variable
}
}
在你的活动中,这样做
(HelloApplication)getApplication()).setGlobalVariable(10);
int valiable=((HelloApplication)getApplication()).getGlobalVariable();
请尝试以下代码:
public class ShoppingListName extend Application{
private String shoppingListName;
public String getShoppingListName() {
return shoppingListName;
}
public void setShoppingListName(String shoppingListName) {
this.shoppingListName = shoppingListName;
}
}
在Android Manifest.xml中:
<application
android:name="yourPacket.ShoppingListName"
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="yourPacket.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我建议您使用
依赖注入
,因为它有助于更好的程序结构。它被否决了吗?你应该给出否决投票的理由。使用静态
var是解决问题的糟糕方法,并且只有在只有一个ShoppingList
实例的情况下,它才能正常工作。这可能是某人被否决的原因。我不会经常这样使用,但对于他的情况,我认为这会很好。你能详细说明你的陈述吗?你能建议或发布更好的解决方案吗@拉阿尔托
<application
android:name="yourPacket.ShoppingListName"
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="yourPacket.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
ShoppingListName shoppinglistname = (ShoppingListName) MainMenu.this.getApplicationContext();
// Now you can get and set shoppinglistname object