如何在Android中的两个活动之间传递字符串?

时间:2012-09-12 09:37:50

标签: android android-activity

这里我在项目中创建了2个活动。

public class CheckAvailability extends Activity{

Button but1,but2;
EditText brName;
TextView txt1;
String text;
//private static final String ATM_NO = "atmbrno";
//private static final String ATM_PLACE = "atmbrname";


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.availability);

    brName =(EditText)findViewById(R.id.editText1);
    but1 = (Button)findViewById(R.id.button5); 
    but2 = (Button)findViewById(R.id.button6);



    but1.setOnClickListener(new View.OnClickListener(){

        public void onClick(View v){

            String b_name=brName.getText().toString();

            Intent intent1 = new Intent(); 
            intent1.setClass(getApplicationContext(), ListAtmActivity.class);
            Bundle b = new Bundle();
            b.putString("key", b_name);
            intent1.putExtras(b);
            startActivity(intent1);
            finish();}
});

    but2.setOnClickListener(new View.OnClickListener(){

        public void onClick(View v){
            Intent intent1 = new Intent(); 
            intent1.setClass(getApplicationContext(), SelectOption.class);
            startActivity(intent1);
    }                                                                       });

}
}

我想将b_name String值传递给另一个Activity。这是我的第二个活动。

public class ListAtmActivity extends ListActivity{


TextView error;
String brName;


// contacts JSONArray
JSONArray contacts = null;

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

    Bundle b = getIntent().getExtras();
    brName = b.getString("key");

    error = (TextView)findViewById(R.id.name);
    error.setText(brName);}}

但我在第二次活动中无法获得该字符串?请帮我找错?

8 个答案:

答案 0 :(得分:3)

答案比你试图做的更简单:

Intent intent = new Intent(this, ListAtmActivity.class);
intent.putExtra("key", b_name);
startActivity(intent);

然后在活动B中:

Intent intent= getIntent(); // gets the previously created intent
String value = intent.getStringExtra("key");

答案 1 :(得分:1)

public void onClick(View v){
        Intent intent1 = new Intent(); 
        intent1.setClass(CheckAvailability.this , ListAtmActivity.class);
        intent1.putExtra("name", b_name );
        startActivity(intent1);
}  

然后在第二项活动中:

   getIntent().getStringExtra("name");

答案 2 :(得分:1)

活动1:

 Intent intent1 = new Intent(); 
        intent1.setClass(getApplicationContext(), ListAtmActivity.class);           
        intent1.putExtra("key", b_name);
        startActivity(intent1);
        finish();

在活动2中:

Intent intent = getIntent();
brName = intent.getStringExtra("key");

答案 3 :(得分:1)

在您的第一个活动中,

            Intent passIntent = new Intent(FirstActivity.this,
                    SecondActivity.class);
            passIntent.putExtra("key", b_name);
            startActivity(passIntent);

在SecondActivity中,

String u_name=getIntent().getExtras().getString("key");

答案 4 :(得分:1)

您需要使用putExtra()

的以下代码
Intent intent=new Intent(this,ListAtmActivity.class);
intent.putExtra("key",b_name);
startActivity(intent)

ListAtmActivity使用

获取字符串
String data;
data=getIntent.getExtras().getString("key");

现在您在数据变量中发送了值。

答案 5 :(得分:0)

在您的第一个活动中

Intent intent = new Intent(context, second.class);
intent.putExtra("string_name", "string");
startActivity(intent);

在你的第二个活动中

Bundle bundle = getIntent().getExtras();
extras.getString("string_name")

答案 6 :(得分:0)

在第一项活动中

Intent in=new Intent(first.this,second.class);
in.putExtra("nameOfImage", "firstImage");
startActivity(in);

在第二项活动中

Intent intent = getIntent();
String nameOfImage = intent.getStringExtra("nameOfImage");

答案 7 :(得分:0)

关于你的第二项活动:

替换:

Bundle b = getIntent().getExtras();
brName = b.getString("key");

使用:

Intent intentListatmactivity = getIntent(); 
brName = intentListatmactivity.getStringExtra("key");