在另一个类

时间:2015-10-14 17:47:26

标签: java android string variables static

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

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();
         }
    });
}

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

2 个答案:

答案 0 :(得分:2)

如果您从活动跳到另一个活动,请使用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所说。

答案 1 :(得分:1)

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

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

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