如何从主要活动中的各种活动中获取价值。

时间:2014-12-05 07:05:05

标签: android android-intent

我想从各种活动中检索一个字符串。我有一个父活动,其中有5个按钮。每个按钮都有子活动。从第一个子活动我将String传递给父活动使用intent.then我想要获取字符串从第二个孩子活动到父母活动。我得到的结果,但第一个孩子的活动值被改为null。同样,我希望得到5个不同的值,从儿童活动到主要活动。

先谢谢,这是我的代码。

 public class bhk1 extends Activity 
 {
  Button bed,hall,kitchen,br,upload;
  TextView hall1,bedrom,kitc,bath;
 String value,value1;
  protected void onCreate(Bundle savedInstanceState) 
 {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.bhk1);
    bed=(Button)findViewById(id.button1);
    hall=(Button)findViewById(id.button2);
    kitchen=(Button)findViewById(id.button3);
    br=(Button)findViewById(id.button4);
    upload=(Button)findViewById(id.upload);

    hall1=(TextView)findViewById(id.hall);
    bedrom=(TextView)findViewById(id.bedrrom);
    kitc=(TextView)findViewById(id.kitchen);
    bath=(TextView)findViewById(id.bathroom);

/*  Intent intent = getIntent();
    String value = intent.getExtras().getString("hall1");
    System.out.println(value);
    hall1.setText(String.valueOf(value));*/



    Bundle extras = getIntent().getExtras();

    if (extras != null) {
        value  = extras.getString("hall1");
        System.out.println(value);
        hall1.setText(String.valueOf(value));

        value1  = extras.getString("bedroom");
        System.out.println(value1);
        bedrom.setText(String.valueOf(value1));

    }





    // hall1.setText(String.valueOf(value));







    hall.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            bhk1.this.startActivity(new Intent(bhk1.this, recordhall1.class));
        }


        });

    bed.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            bhk1.this.startActivity(new Intent(bhk1.this, recordbed1.class));

        }


        });
    kitchen.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            bhk1.this.startActivity(new Intent(bhk1.this, recordkitchen1.class));
        }


        });
    br.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            bhk1.this.startActivity(new Intent(bhk1.this, recordbr1.class));
        }


        });

    upload.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            bhk1.this.startActivity(new Intent(bhk1.this, recordbr1.class));
        }


        });


}

}

    *recordhall1.java*
   String hall1=String.valueOf((fileUri.getPath()));
               Intent i1 = new Intent(recordhall1.this, bhk1.class);
                i1.putExtra("hall1", hall1);
                startActivity(i1); 


    *recordbedroom.java*
String bedroom=String.valueOf((fileUri.getPath()));

                Intent i = new Intent(recordbed1.this, bhk1.class);
                i.putExtra("bedroom",bedroom);
                startActivity(i);

1 个答案:

答案 0 :(得分:0)

您无法从其他活动中获取价值的原因是因为这不是获取额外的正确方法。当你像这样存储Intent extra 时:

String hall1=String.valueOf((fileUri.getPath()));
Intent i1 = new Intent(recordhall1.this, bhk1.class);
i1.putExtra("hall1", hall1);
startActivity(i1);

然后您应该使用以下代码来获取额外

value = getIntent().getStringExtra("hall1");
System.out.println(value);
hall1.setText(value);

您的代码返回 null ,因为您从未将 Bundle 作为Intent extra

修改

如果你没有使用Bundle ,上面的代码可以。但是,如果您使用Bundle:

String hall1=String.valueOf((fileUri.getPath()));
Bundle extras = new Bundle();
extras.putString("hall1", hall1);
Intent i1 = new Intent(recordhall1.this, bhk1.class);
i1.putExtras(extras);
startActivity(i1);

然后你可以通过以下代码获得额外内容:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    value  = extras.getString("hall1");
    System.out.println(value);
    hall1.setText(value);
}