2014-01-09 3 views
-1

Это мои сеттера и добытчики в ShoppingListName.javaКак использовать сеттер и добытчик в другом файле 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()); 

Но очевидно, что я получаю нулевой возврат.

+0

Я предлагаю вам использовать 'Dependence Injection', как это хорошо для лучшей структуры – Rugal

ответ

1

* геттер сеттер Класс

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 = ShoppingListName.getShoppingListName(); *

UPDATE

, как @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(); 
+0

программы Y это было вниз проголосовали? Вы должны дать основание для голосования. –

+0

Использование 'static' var - это ужасный способ решить проблему, и она работает только правильно, если есть только один экземпляр« ShopList ». Это может быть причиной того, что кто-то отказался. – laalto

+0

Я обычно не буду так часто пользоваться, но для его случая я думал, что это будет хорошо. Можете ли вы разработать свое утверждение и можете предложить или опубликовать лучшее решение для этого? @laalto –

0

Вы могли сделать методы получения и установки статического, а затем, что последний звонок вы использовали бы работать. Затем при условии, что поток такой, что метод получения называется после установленным методом, вы не должны были бы явно передать что угодно.

Таким образом, эффективно, вы бы обмена один экземпляр через многие другие классы, как вы хотите.

1

И я пытаюсь передать строку в другой файл java (CreateList.java) Как я могу это сделать?

Предположительно, то, что вы имеете в виду здесь является то, что вы хотели бы передать String к методу, определенному в классе CreateList.

Итак, просто создайте метод на CreateList, который принимает String и делает все, что ему нужно.

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. Какова основная ответственность за этот объект?

1

ShoppingListName класс экземпляра в MainMenu.java отличается от экземпляра в CreateList.java. Очевидно, что новый экземпляр в CreateList.java не может получить значение, которое вы установили в экземпляре в MainMenu.java. Вы должны каким-то образом передать экземпляр от MainMenu.java до CreateList.java или поделиться одним и тем же экземпляром между двумя классами.

0

попробовать этот код:

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 
Смежные вопросы