Android将值从一个活动传递到另一个活动(字符串)或从一个类传递到另一个类

时间:2013-08-10 09:23:37

标签: android class spinner

我有两个类Profile.class和Details.class,

在个人资料类中,我使用了一个微调器,其价值如(ATM,银行,个人,其他等) 和一个按钮(OK)。 单击确定按钮,它将转到下一个活动,即详细活动,我将采取一些细节,如名称,描述等。

填写细节后我给了一个按钮(保存)。 点击按钮保存我将保存数据库中的名称和描述,但我想保存配置文件名称以及详细信息。我无法将所选的微调器文本从Profile.class传输到Details.class

如何转移?

create.class代码

公共类创建扩展活动{

    public ArrayList<String> array_spinner;
    Button button4;
    String spinnertext;

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create);
        Spinner spinner = (Spinner) findViewById(R.id.spinner1);
        array_spinner=new ArrayList<String>();
        array_spinner.add("ATM");
        array_spinner.add("Bank");
        array_spinner.add("Mail");


        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, array_spinner);
        adapter.setNotifyOnChange(true);
        spinner.setAdapter(adapter);

        spinner.setLongClickable(true);
        spinner.setOnLongClickListener(new OnLongClickListener(){

            public boolean onLongClick(View v) {
                // TODO Auto-generated method stub


                return false;

       }}
       );


        button4 = (Button)findViewById(R.id.button4);
        button4.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent myIntent4 = new Intent(view.getContext(), Details.class); 
                startActivityForResult(myIntent4, 0);

                myIntent4 .putExtra("key", array_spinner.getSelectedItem().toString());
                startActivity(myIntent4);
            }

        });

}}

details.class code

public class Details扩展Activity {

EditText editText4,editText5,editText6;
Button button8,button9,button10;
TextView textView7;
String et4,et5,et6;
//SQLite Database db;


/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.details);

    String spinnervalue = getIntent().getExtras().getString("Key");
请告诉我这是什么“关键”?

3 个答案:

答案 0 :(得分:1)

首先取一个微调器并为它们提供你想要的值,然后选中的微调器值将它改为字符串值,这个字符串变量将在OK按钮中用来通过使用 Intent传递值共享首选项将此值带到另一个活动,然后您可以在数据库中使用它来显示此值。

答案 1 :(得分:1)

如果您想将数据发送到其他活动,可以使用intent

Bundle bund = new Bundle();

bund.putString("myKey",name);

Intent intent = new Intent(Profile.this, Detail.class);

intent.putExtras(bund);

startActivity(intent);

现在在Detail类中,在onCreate()

中接收此数据
    @Override
protected void onCreate(Bundle savedInstanceState) {
      .......

    String nameReceived = getIntent().getExtras().getString("myKey");
}

我已经给出了将String传递给另一个活动的示例,但是,您可以将boolean,int,double等传递给另一个活动。请参阅here

上的完整列表

答案 2 :(得分:1)

您可以使用:

    Intent i = new Intent(MainActivity.this,SecondActivity.class);
    i.putExtra("YourValueKey", yourData.getText().toString());

然后你可以通过以下方式从第二项活动中获得它:

    Intent intent = getIntent();
    String YourtransferredData = intent.getExtras().getString("YourValueKey");

例如

这是您在第一项活动中必须写的内容

 Intent i = new Intent(getApplicationContext(), Product.class);
 i.putExtra("productname", ori);
 i.putExtra("productcost", position);
 i.startActivityForResult(i,0);

然后在您的下一个活动中,您需要拥有此代码

 String productname,productcost;

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.product);

    tv1= (TextView)findViewById(R.id.tv1);
    tv2= (TextView)findViewById(R.id.tv2);

     Bundle extras= getIntent().getExtras();
     if(extras!=null)
     {
        position = extras.getString("position"); // get the value based on the key
        tv1.setText(productname);//use where ever you want
        productname = extras.getString("productname"); // get the value based on the key 
        tv2.setText(productname);

    }