【问题标题】:Use a string (from input) in another class在另一个类中使用字符串(来自输入)
【发布时间】:2015-10-14 17:47:25
【问题描述】:

我有一个从输入中获取字符串的类。我想在第二类中使用输入的值。

public class Incontrare extends ActionBarActivity {
public static String nome1=null;
public String variabileNome;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_incontrare);


    Button button1 = (Button) findViewById(R.id.button1Nome);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            alertDia();  //takes the input from variabileNome
            nome1 = variabileNome;
            TextView textv1 = (TextView) findViewById(R.id.textView1);
            textv1.setText(nome1);

        }
    });

    public static String getNome1() {return nome1;}
 }
 }

还有二等:

public class IncontrarePersona1 extends ActionBarActivity {
String nome1=Incontrare.getNome1();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_incontrare_persona1);
    b1=(Button)findViewById(R.id.play);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        String toPrint = "There is " + nome1;
        Toast.makeText(getApplicationContext(), toPrint, Toast.LENGTH_SHORT).show();
         }
    });
}

第二堂课我也是这样试的:

public class IncontrarePersona1 extends ActionBarActivity {
String nome1=Incontrare.getNome1();
public static String no1;       

 b1=(Button)findViewById(R.id.play);
   b1.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
   Incontrare no1= new Incontrare();
   String n1= no1.nome1;
   String toPrint = "There is " + nome1;
        Toast.makeText(getApplicationContext(), toPrint, Toast.LENGTH_SHORT).show();
         }
    });
}

错在哪里?为什么我总是为空? 任何帮助表示赞赏。谢谢:)

【问题讨论】:

  • 您试图在方法中定义一个公共静态字段?这是不可能的,应该会给你错误。这只是复制和粘贴失败吗?请更正您的问题代码。
  • 有趣的是,如果您可以获取这样的值,那么可能会出现的问题是 variabileNome 是否不为空。您在这里没有任何代码表明它并不总是为空。
  • @Pinkie,你说得对,我修改了它
  • @Ashley 字符串是由我没有在这里写的方法 alertDia() 修改的(问题不是那个)。

标签: java android string variables static


【解决方案1】:

如果您从活动跳转到另一个使用 Bundle。

捆绑示例 - 设定值

Intent i = new Intent();
i.setClass(this, IncontrarePersona1.class);
i.putExtra("text", "some text");
startActivity(i);

获取价值:

 Bundle extras = getIntent().getExtras();
if (extras != null)
{
 String data= extras.getString("text");
//data is your param
}

如 Will McG 所说,否则使用带有静态变量的静态类。

【讨论】:

  • 感谢您的帮助,但我应该在哪里添加代码?如果我把它放在变量声明之后,当我尝试打开 Incontrare.class 时它会给我错误再次感谢您的帮助
  • 在初始化需要在另一个类中传递的变量之后,您必须在第一个类的 onCreate 方法中设置 bundle。之后,要从 bundle 中获取值,将该代码行添加到第二个类的任何方法中班级。我输入了设置和获取值的代码,只需复制粘贴它们即可。
【解决方案2】:

我认为问题在于,当第二个 Activity 成为焦点时,前一个 Activity 中的数据会丢失。

创建一个单独的类来保存Activitys 都可以访问的静态变量。

编辑: 如果我担心整个应用程序失去焦点,我用来传递数据的另一种方法是SharedPreferences

【讨论】:

  • 通过intent 传递值仅在第一个 Activity 直接启动第二个 Activity 时才有用,这在问题中未作为要求的一部分说明。
猜你喜欢
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 2014-01-05
  • 2021-12-13
  • 2012-07-20
  • 1970-01-01
相关资源
最近更新 更多