【问题标题】:Send value of Spinner to Public Static variable - Android将 Spinner 的值发送到公共静态变量 - Android
【发布时间】:2016-02-20 06:04:54
【问题描述】:

所以 .. 我有两个活动,在 SecondActivity 上我有一个 Spinner,从这个 Spinner 中选择的项目必须存储在一个 Variable public static 中,在 TerceiraActivity 我可以得到变量操作.

论文是活动。

第二活动

    package br.exemplosqlite;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.Spinner;

    import org.w3c.dom.Text;

    public class SecondActivity extends Activity implements  AdapterView.OnItemSelectedListener {

public static String mahone = "atemais";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        //referencia a Spinner
        //Spinner coligada;

        //final TextView nome = (TextView)findViewById(R.id.txvNome);
        //final TextView sobrenome = (TextView)findViewById(R.id.txvSobrenome);
        //final Spinner pday = (Spinner)findViewById(R.id.spinner);

        final Spinner spcoligada = (Spinner)findViewById(R.id.coligada);






        //spinner = (Spinner)findViewById(R.id.spinner);

        ArrayAdapter adaptercoligada= ArrayAdapter.createFromResource(this, R.array.coligada, android.R.layout.simple_spinner_item);
        spcoligada.setAdapter(adaptercoligada);



        Button ok = (Button)findViewById(R.id.btnok);







        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //chamada para a nova Activity
                Intent intent = new Intent(SecondActivity.this, TerceiraActivity.class);
                intent.putExtra("coligada", spcoligada.getSelectedItem().toString());


                //intent.putExtra("nomePessoa", nome.getText().toString());
                //intent.putExtra("sobrenomePessoa", sobrenome.getText().toString());
                //intent.putExtra("day", pday.getSelectedItem().toString());

                public String pcoligada="";








                startActivity(intent);
            }
        });
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
       }

这是“TerceiraActivity

package br.exemplosqlite;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Spinner;
import android.widget.TextView;

public class TerceiraActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_terceira);

    Intent intent = getIntent();
    //String parametro = (String) intent.getSerializableExtra("nomePessoa");
    //String psobrenome = (String) intent.getSerializableExtra("sobrenomePessoa");
    //String ppday = (String) intent.getSerializableExtra("day");

    String pcoligada = (String) intent.getSerializableExtra("coligada");


    //TextView nome = (TextView)findViewById(R.id.txvNome);
    //TextView sobrenome = (TextView)findViewById(R.id.txvSobrenome);
    TextView coligadas = (TextView)findViewById(R.id.spvcoligada);


    //nome.setText("Olá " + parametro + ", Tem de fazer a barba " );
    coligadas.setText("coliga escolhida : " +pcoligada);
}
  }

【问题讨论】:

  • 我想你想要getStringExtra,而不是getSerializableExtra...
  • 您的代码似乎没问题。您将正确的值作为参数传递给Intent,然后启动相应的Activity。有什么问题?
  • 我想公开“pcoligada”,所以,我将把这个变量传递给我的 BD.class,你能帮帮我吗?

标签: android android-studio android-intent android-activity spinner


【解决方案1】:

只需将getSerializableExtra 更改为getStringExtra

如果您想让 pcoligada 公开而不是声明为全局变量,

将代码更改为:

Intent intent = new Intent(SecondActivity.this, TerceiraActivity.class);
            intent.putExtra("coligada", spcoligada.getSelectedItem().toString());

            //intent.putExtra("nomePessoa", nome.getText().toString());
            //intent.putExtra("sobrenomePessoa", sobrenome.getText().toString());
            //intent.putExtra("day", pday.getSelectedItem().toString());

            startActivity(intent);

public String pcoligada = ""; // 取全局变量,你可以把它当作静态变量,也可以从其他类访问

现在onCreate()另一个activity的方法;

    Intent intent = getIntent();
    //String parametro = (String) intent.getSerializableExtra("nomePessoa");
    //String psobrenome = (String) intent.getSerializableExtra("sobrenomePessoa");
    //String ppday = (String) intent.getSerializableExtra("day");

    pcoligada = intent.getStringExtra("coligada");

    //TextView nome = (TextView)findViewById(R.id.txvNome);
    //TextView sobrenome = (TextView)findViewById(R.id.txvSobrenome);
    TextView coligadas = (TextView)findViewById(R.id.spvcoligada);


    //nome.setText("Olá " + parametro + ", Tem de fazer a barba " );
    coligadas.setText("coliga escolhida : " +pcoligada);

【讨论】:

  • 只是好奇。 String 实现了 Serializable,为什么要改呢?
  • 因为我是这样用的,没有更多理由
  • 嘿阿米特,我的代码正在运行,我唯一想要的是将“pcoligada”更改为公共,所以我将把这个变量传递给我的 BD.class,你能帮帮我吗?跨度>
  • 阿米特,我换了SecondActivity,看看是否正确。
  • 我想要,当从 SecondActivity 的微调器中选择项目时,微调器的这个值必须是公共静态的,因为,我想把这个值放到另一个名为“BD.class”的活动中,或者,使用任何活动中的值
猜你喜欢
  • 2011-09-23
  • 2015-12-02
  • 2012-02-03
  • 2015-03-19
  • 2015-04-07
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
相关资源
最近更新 更多