【问题标题】:Change a string in one class from another class. Android从另一个类更改一个类中的字符串。安卓
【发布时间】:2015-01-18 16:02:18
【问题描述】:

所以我正在尝试更改 Favoutires 类中的字符串(称为“string1”)的值。

我正在使用以下代码。 任何想法为什么它不起作用,也许什么会起作用?

String Athenry = "Athenry";

                Favourites favourites = new Favourites();
                favourites.string1 = Athenry;

下面是我最喜欢的课程

public class Favourites extends ActionBarActivity {

    String string1;
    String st2;
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fav);
        final Button but1 = (Button) findViewById(R.id.button1);

【问题讨论】:

  • 你可以扩展它不工作的方式吗?值不变吗?你有错误吗? (另外注意,给变量camelCase 名称是惯例,所以Athenry 将是athenry,这样它就不会与具有TitleCase 名称的类混淆。)

标签: java android string class


【解决方案1】:

一种方法是使字符串 string1 静态

public class Favourites extends ActionBarActivity {

 public static  String string1;
String st2;
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fav);
    final Button but1 = (Button) findViewById(R.id.button1);

Favourites.string1 = Athenry;

【讨论】:

  • 但是每个Favourites 将具有相同的string1 值。
  • @Moubeen Farooq Warar:非常感谢。我最近一直在用 Python 编程,所以我会把它归咎于我的视线。哈哈,再次感谢,你是个传奇。
  • Favourites.string1 = Athenry;这将更改 string1 的值,当您尝试访问 string1 时,它将返回 Athenry
  • Favourites f1 = new Favourites(); f1.string1 = "Athenry"; Favourites f2 = new Favourites(); f2.string1 = "Not Athenry"; // f1.string1 now equals "Not Athenry"
【解决方案2】:

因为您确实为变量 string1 声明了访问修饰符。默认情况下它是私有的。你必须像这样公开它:

public String string1;

但这是一种不好的做法。您可能希望为这类工作配备 getter 和 setter。所以基本上是这样的:

private String string1;
public String setString1(String s){
string1 = s;
}

然后你通过调用方法来访问它

Object.setString("Your String");

【讨论】:

    【解决方案3】:

    你应该为那个字符串做一个设置器

    public class Favourites extends ActionBarActivity {
    String string1;
    public void setString1(String value){
          string1=value;
    }
    

    然后在需要时调用它

    String Athenry = "Athenry";
    
                Favourites favourites = new Favourites();
                favourites.setString1(Athenry);
    

    【讨论】:

      猜你喜欢
      • 2012-12-05
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多