Android 在活动之间传递字符串

Android 在活动之间传递字符串,android,string,android-activity,Android,String,Android Activity,嗨,我想通过两个动作传递一个字符串我一直在另一个答案中寻找它,并尝试了这个: public class GlobalVars extends Activity { private static String winename; public static String getWineName(){ return winename; } public static void setWineName(String s){ winename=s; } } 并将活动1中的字符串设置为

嗨,我想通过两个动作传递一个字符串我一直在另一个答案中寻找它,并尝试了这个:

public class GlobalVars extends Activity {
private static String winename;

public static String getWineName(){
    return winename;
}
public static void setWineName(String s){
    winename=s;
}
}

并将活动1中的字符串设置为:

EditText searchbox=(EditText) findViewById(R.id.buscarmainText);
String searchb=searchbox.getText().toString();
GlobalVars.setWineName(searchb);
但是,当我在活动2中调用getWineName方法时,字符串winename似乎为空,调用方式如下:

public String sbuscar=GlobalVars.getWineName();

不知道我做错了什么。

最好在活动之间传递字符串

在您的第一节活动课中:

Intent i = new Intent(this, activity2.class);
i.putExtra("KEY",YourData);
在下一节活动课上

Bundle extras = getIntent().getExtras();
if(extras !=null) {
    String value = extras.getString("KEY");
}

最好在有意图的活动之间传递字符串

在您的第一节活动课中:

Intent i = new Intent(this, activity2.class);
i.putExtra("KEY",YourData);
在下一节活动课上

Bundle extras = getIntent().getExtras();
if(extras !=null) {
    String value = extras.getString("KEY");
}

你应该把你的全局变量放在这样一个holder类上

public class GlobalVars {
     public static final String KEY_WINENAME = "winename";
     private static HashMap<String, String> globalVars = new HashMap<String, String>();

     public static String getGlobalVariable(String key) {
         return globalVars.get(key);
     }
}

例如,如果更改方向,则可能没有保持EditText状态,因此其中的文本将再次变为空,并再次调用代码清空变量。如果您不确定,请在
setWinename()
中放置一个日志行,以检查是否调用了两次。

您应该将全局变量放在这样的holder类上

public class GlobalVars {
     public static final String KEY_WINENAME = "winename";
     private static HashMap<String, String> globalVars = new HashMap<String, String>();

     public static String getGlobalVariable(String key) {
         return globalVars.get(key);
     }
}

例如,如果更改方向,则可能没有保持EditText状态,因此其中的文本将再次变为空,并再次调用代码清空变量。如果不确定,请在
setWinename()
内放置一个日志行,以检查是否调用了两次。

应通过
Intent
传递字符串。不要这样做。使用意图。也尝试了,但我的字符串仍然为空。您应该通过
Intent
传递字符串。不要这样做。使用意图。也尝试了,我的字符串仍然是空的。谢谢!我认为应该使用oncreate方法。现在,当我想调用重写方法中的值字符串时,它会说值不能解析为变量,请帮助我!非常感谢。我认为应该使用oncreate方法。现在,当我想调用重写方法中的值字符串时,它会说值不能解析为变量,请帮助我!