【问题标题】:How to use a String outside onCreate method如何在 onCreate 方法之外使用字符串
【发布时间】:2015-06-07 16:38:31
【问题描述】:

我的 onCreate 方法中有以下代码:

Bundle appleData = getIntent().getExtras();
    if(appleData==null) {
        return;
    }
    String appleMessage = appleData.getString("appleMessage");

    final TextView texttest = (TextView) findViewById(R.id.texttest);
    texttest.setText(appleMessage);

我想在 onCreate 之外的同一个活动上以不同的方法使用存储在 appleMessage 中的字符串,我该怎么做?

【问题讨论】:

  • 只需在onCreate方法外声明String变量即可。

标签: string methods


【解决方案1】:

在你的类中声明它,而不是在方法中。

例如

private String appleMessage;

并为此使用getter和setter

public String getAppleMessage(){
 return appleMessage;
}

【讨论】:

  • 为什么是 getter 和 setter?
【解决方案2】:

如果您在类中的多个地方都需要它,那么您可以通过在方法之外声明它来使其成为成员变量

public class SomeClass extends Activity {

    String appleMessage = "default text";

但如果您只需要在一种方法中使用它,如果您在 onCreate() 中调用该方法,则可以简单地将其传递给方法调用

public void onCreate(Bundle bundle) {
   ...
   String appleMessage = appleData.getString("appleMessage");

   final TextView texttest = (TextView) findViewById(R.id.texttest);
   texttest.setText(appleMessage);

   // here
   myMethod(appleMessage);
}

假设myMethod 采用String 作为参数。

我还建议您read the java docs 和一些基本教程,然后再继续使用 Android。它会让你的生活更轻松。

【讨论】:

    【解决方案3】:

    在类上创建一个成员变量,在onCreate方法中设置。

    有关实例/成员变量的更多信息,请参阅here

    所以:

    class SomeClass extends Activity {
        private String appleMessage;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ...
            appleMessage = ...
        }
    
        public void otherMethod() {
            Log.e("LOG", "Here is appleMessage: " + appleMessage);
        }
    }
    

    【讨论】:

      【解决方案4】:

      您应该在 onCreate 方法之外声明一个 String 属性。例如:

      private String appleMessage;
      

      然后,在您的 onCreate 中,只需更改此行:

      appleMessage = appleData.getString("appleMessage");
      

      当您想在其他方法上使用它时,只需调用它即可。它的值将是 onCreated 方法上设置的值。

      【讨论】:

      • 你做得很简单,谢谢@cristianorbs。当我的等级足够高时,我会投票给你!
      • @Antonio 简单并不总是更好。如果您只需要在另一种方法中使用它,则不需要将其设为成员变量。您可以简单地将其传递给您需要的方法。您应该阅读 Java 文档并阅读有关范围的信息。无论如何,您不必等待投票,您可以通过单击旁边的复选标记来接受最有帮助的答案。
      • 感谢您告诉我@codeMagic,我会查看文档。
      猜你喜欢
      • 2016-12-08
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多