Как использовать одну и ту же строку в двух файлах Java - PullRequest
0 голосов
/ 16 октября 2011

Извините за мой плохой английский и за, возможно, глупый вопрос, но я новичок в Java.

Мне нужно использовать ту же строку в 2 файлах Java, например:

В первом java-файле у меня есть код для отправки электронных писем, у меня установлена ​​строка для электронной почты по умолчанию:

public String mail = new String ("lala@gmail.com");

и я использую эту строку в коде для отправки электронной почты:

email.addTo(mail);

Во втором java-файле что-то вроде настройки, где пользователь может установить новый адрес электронной почты. Я хочу иметь ту же строку, связанную со строкой в ​​первом java-файле. Когда пользователь вводит новый адрес электронной почты, String mail будет изменен на новый адрес электронной почты и в email.addTo (mail); будет использовать этот новый адрес

Как я могу это сделать?

Ответы [ 4 ]

2 голосов
/ 16 октября 2011

используйте Shared Preferences, вы можете сохранить его как пару ключ-значение.значение вашего адреса электронной почты, а ключ может быть любой уникальной строкой, с которой вы хотите идентифицировать ее.

1 голос
/ 16 октября 2011

Я немного запутался с этим вопросом, но я сделаю удар по нему. По сути, вы хотели бы, чтобы одна строка в данном файле использовалась в нескольких местах. Это легко сделать с помощью переменных уровня класса и сделать их общедоступными.

Например, в файле:

EmailObject.java

public class EmailObject {

    public static final String mail = "lala@gmail.com";

    // The rest of your code
}

Другой файл может получить к нему доступ так:

OtherObject.java

public void sendEmail() {
     EmailMessage email = new EmailMessage();
     email.addTo(EmailObject.mail);
}

Обратите внимание на модификаторы static и final на оригинале. Это гарантирует, что вам не нужен фактический экземпляр EmailObject для доступа к строке, а также гарантирует, что строка никогда не будет случайно изменена каким-либо другим объектом.

Конечно, есть и другие способы сделать это, но этот наиболее соответствует вашему коду. Это тоже очень "Java" решение. У Android есть другие способы обмена данными (как указано в другом ответе).

0 голосов
/ 16 октября 2011

Много ответов в зависимости от того, как будет использоваться строка.

  • Если это постоянная строка, которая никогда не изменится, никогда не используйте окончательную статическую строку

    publicfinal static String AUTHOR_MAIL = "lala@gmail.com";

Затем вы можете использовать его статическим способом, где хотите.

email.addTo (MyClass.AUTHOR_MAIL);

  • Если эта строка будет использоваться в различных действиях, вы не сможете получить к ней доступ напрямую (вы не сможете определить, живо ли другое действие еще).Вы должны использовать постоянные механизмы, такие как SharedPreferences или напрямую отправлять необходимые данные в своем намерении.

  • Если он находится во вспомогательном классе внутри вашей деятельности, вы можете просто использовать mObject.mail дляполучите это.

0 голосов
/ 16 октября 2011

Самый простой способ, который я бы не рекомендовал, - это иметь общедоступное статическое поле:

class A {
   public static String commonString;
}

class B {

   public void methodThatUsesString () {
      // Do stuff with the string
      Log.d("I have the string", A.commonString);
   }
}

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

Упомянутый выше способ SharedPreferences также является хорошим решением, если адрес электронной почты является постоянным, предпочтением, если хотите, а не просто данными, требующимися для операции.

Вы можете сохранить ссылку на один экземпляркласса в другом и получить доступ к его полям через него:

class A {
   public String commonString;
}

class B {
   private final A instaceOfA;

   public B (A instanceOfA) {
      this.instanceOfA = instanceOfA;
   }

   public void methodThatUsesString () {
      // Do stuff with the string
      Log.d("I have the string", instanceOfA.commonString);
   }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...