簡體   English   中英

如何在不同的Java文件中使用setter和getters

[英]How to use setters and getters in different java file

這是我在ShoppingListName.java中的設置方法和獲取方法

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());

但很明顯,我收到的回報為空。

我正在嘗試將字符串傳遞到另一個Java文件(CreateList.java),該怎么做?

大概,您的意思是想將String傳遞給類CreateList定義的方法。

因此,只需在CreateList上創建一個接受String ,然后執行所需的任何操作即可。

public class CreateList {

    public static void doSomething(String listName) { 
       //do whatever you want with it
    }
}

附帶一提,您的ShoppingShopName類似乎沒有為任何有意義的現實世界對象建模。 考慮將其更改為:

public class ShoppingList {

    List<ShoppingItems> items;
    String listName;
 ..   
 ..
}

CreateList 此對象的主要責任是什么?

MainMenu.java ShoppingListName類實例與CreateList.java的實例不同。 顯然, CreateList.java的新實例無法獲取您在MainMenu.java實例中設置的值。 您必須以某種方式將實例從MainMenu.java傳遞到CreateList.java或在兩個類之間共享同一實例。

* Getter Setter類

public class ShoppingListName {
private static String shoppingListName;
public static String getShoppingListName() {
    return shoppingListName;
}
public static void setShoppingListName(String shoppingListName) {
    ShoppingListName.shoppingListName = shoppingListName;
}

}

設置值 ShoppingListName.setShoppingListName(“您需要設置的值”);

獲取值 String value = 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();

可以將getter和setter方法設為靜態 ,然后您使用的最后一個調用將起作用。 然后, 假設流程允許 set方法之后調用get方法,則無需顯式傳遞任何內容。

因此, 有效地 ,您將根據需要在多個其他類之間共享單個實例。

試試這個代碼:

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>

在MainMenu.java中:

ShoppingListName shoppinglistname = (ShoppingListName) MainMenu.this.getApplicationContext();
// Now you can get and set shoppinglistname object

暫無
暫無

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

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