假设我想传递一个带有 Intent 的字符串。这是不好的 OOP 实践吗:
public class MessageSender extends Activity
{
public static final THE_STRING = "my message";
...
String value = "This is what I need to send";
Intent displayResultsIntent = new Intent(this, MessageReceiver.class);
displayResultsIntent.putExtra(MessageSender.THE_STRING, value);
...
}
public class MessageReceiver extends Activity
{
...
Intent intent = getIntent();
String yourMessage = intent.getStringExtra(MessageSender.THE_STRING);
...
}
我的直觉告诉我应该有更好的方法。看来如果我在 MessageReciever 中使用另一个类的静态变量,我也可以这样做
"This is what I want to send"
静态并直接在 MessageReceiver 中引用。
我可以在创建 Intent 的方法的注释中指定字符串参数将是“我的消息”。但如果您更新参数名称而不更新注释,这似乎更容易出错。
我读到您应该尝试避免通过使用彼此的变量将类绑定(bind)在一起。使用 Intent 时我们是否需要做一些作弊?
最佳答案
只需在应用程序的任何类中直接使用 MessageSender.THE_STRING
(因为静态),因为在构建 APK 后,它会直接分配给该方法或变量。
您的代码示例
public static final THE_STRING = "my message";
Intent displayResultsIntent = new Intent(this, MessageReceiver.class);
displayResultsIntent.putExtra(MessageSender.THE_STRING, value);
构建APK后,上面的代码转换为
Intent displayResultsIntent = new Intent(this, MessageReceiver.class);
displayResultsIntent.putExtra("my message", value);
和
String yourMessage = intent.getStringExtra("my message");
关于Java Android 开发 : Is it bad practice to reference other classes static Strings get Intent parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760596/