Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android开发:引用其他类静态字符串获取意图参数是一种不好的做法吗?_Java_Android_Android Intent - Fatal编程技术网

Java Android开发:引用其他类静态字符串获取意图参数是一种不好的做法吗?

Java Android开发:引用其他类静态字符串获取意图参数是一种不好的做法吗?,java,android,android-intent,Java,Android,Android 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, Mess

假设我想要传递一个有意图的字符串。这是一种糟糕的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);
    ...
}
我的直觉告诉我应该有更好的办法。似乎如果我在MessageReceiver中使用另一个类的静态变量,我也可以

"This is what I want to send"
静态和直接在MessageReceiver中引用

我可以在注释中为创建字符串参数为“我的消息”的意图的方法指定。但如果在不更新注释的情况下更新参数的名称,则更容易出错

我已经读过,您应该尽量避免使用彼此的变量将类绑定在一起。在使用意图的时候,我们是不是一定要有点欺骗

我读过,你应该尽量避免使用每个 其他变量。我们是否需要在使用时进行一些欺骗 意图


你声明的是一个常数。使用
final
声明其值不能更改,使用
static
声明它不会链接到特定实例,但只创建一次。在您描述的用例中,这确实是一个很好的实践。你既没有作弊,也没有把课堂绑在一起

只需使用
MessageSender即可。在应用程序中的任何类中直接使用\u字符串
(因为是静态的),因为在构建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");