简体   繁体   English

Android:捆绑传递

[英]Android : bundle passing

I have to pass a value from my first activity to fourth activity...add2cart.java is my third activity and buy_ltr.java is my fourth activity.I want to pass the bundle on button click in third activity and it should be get in fourth activity and have to set the values in its edit text field.But Its not working fine.Please help me. 我必须将值从我的第一个活动传递到第四个活动... add2cart.java是我的第三个活动,而buy_ltr.java是我的第四个活动。我想在第三次活动中单击按钮时传递捆绑,它应该进入第四项活动,必须在其编辑文本字段中设置值。但是它无法正常工作。请帮助我。

I made my tries in add2cart.java.In every time the emulator crashes because of Null point exception in line 我在add2cart.java中尝试过。每次模拟器由于行中的空点异常而崩溃时

sme=bundl.getString("dtls"); sme = bundl.getString(“ dtls”);

My Tries and its results 我的尝试及其结果

1.Pass values and set in edit text.But crashes on clicking add2cart button 1.传递值并在编辑文本中进行设置。但是在单击add2cart按钮时崩溃

  Intent in=getIntent();

  Bundle bundl=in.getExtras();

  sme=bundl.getString("dtls");

2.Intent to next page clicking add2cart button.But edit text fields are blank. 2.意图进入下一页,单击“ add2cart”按钮。但“编辑”文本字段为空白。

  if(first_init){   
         sme = "some_value";
          first_init = false;
        }

      else{
         Intent in=getIntent();
         Bundle bundl=in.getExtras();
         sme=bundl.getString("dtls");
        }

3.Pass values and set in edit text.But crashes on clicking add2cart button 3.传递值并在编辑文本中进行设置,但是在单击add2cart按钮时崩溃

 if(first_init){    
         Intent in=getIntent();
         Bundle bundl=in.getExtras();
         sme=bundl.getString("dtls");
               }
  else{
         sme = "some_value";
         first_init = false;

        }

add2cart.java add2cart.java

public class add2cart extends Activity{
ListView adlstvw;
Button btn,remove_btn;
SQLiteDatabase mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add2crt);
    adlstvw=(ListView)findViewById(R.id.lstvw_add2crt);
    btn=(Button)findViewById(R.id.place_order);

     Intent in=getIntent();
     Bundle bundl=in.getExtras();
     sme=bundl.getString("dtls");

    mydb=add2cart.this.openOrCreateDatabase("addcart", MODE_PRIVATE, null);
    Cursor cr = mydb.rawQuery("SELECT * FROM add2cart", null);
    String [] pname = new String[cr.getCount()];
    String [] price = new String[cr.getCount()];

    int i = 0;
    while(cr.moveToNext())
    {
        String name = cr.getString(cr.getColumnIndex("pnme"));
        String prprice = cr.getString(cr.getColumnIndex("prate"));
        pname[i] = name;
        price[i] = prprice;
        i++;
    }
    CartAdapter cart=new CartAdapter(this,pname,price);
    adlstvw.setAdapter(cart);

    btn.setOnClickListener(new OnClickListener() {

         @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent in=new Intent(add2cart.this,buy_ltr.class); 
            Bundle bndl = new Bundle();
            bndl.putString("som",sme); 
            in.putExtras(bndl);
            startActivity(in);

        }
    });

}

}

Buy_ltr.java Buy_ltr.java

public class buy_ltr extends Activity {
EditText edt1,edt2,edt3,edt4,edt5;
Button btn;
SQLiteDatabase mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.buy_ltr);
    edt1=(EditText)findViewById(R.id.nameedit);
    edt2=(EditText)findViewById(R.id.addrsedit);
    edt3=(EditText)findViewById(R.id.cityedit);
    edt4=(EditText)findViewById(R.id.pincodedit);
    edt5=(EditText)findViewById(R.id.mobedit);
    btn=(Button)findViewById(R.id.cnfm_ordr);


    Intent in=getIntent();
    Bundle bndl=in.getExtras();
    String cont=bndl.getString("som");

    mydb=this.openOrCreateDatabase("shopping", MODE_PRIVATE, null);
    mydb.execSQL("CREATE TABLE IF NOT EXISTS contacts(name varchar,adrs varchar,city varchar,pin varchar," +
            "uname varchar,pass varchar,mob varchar,eid varchar)");

    Cursor cur=mydb.rawQuery("SELECT * FROM contacts WHERE uname='"+cont+"' ", null);
    while (cur.moveToNext()) {

        String nm=cur.getString(cur.getColumnIndex("name"));
        edt1.setText(nm);
        String ad=cur.getString(cur.getColumnIndex("adrs"));
        edt2.setText(ad);
        String cty=cur.getString(cur.getColumnIndex("city"));
        edt3.setText(cty);
        String pc=cur.getString(cur.getColumnIndex("pin"));
        edt4.setText(pc);   


}
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

              Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
              String[] recipients = new String[]{"my@email.com", "",};
              emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
              emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Test");
              emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is email's message");
                  emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"name:"+edt1.getText().toString()+"\n"+"address:"+edt2.getText().toString()+"\n"+"city:"+edt3.getText().toString()+"\n"+"pin:"+edt4.getText().toString());

              emailIntent.setType("message/rfc822");
              startActivity(Intent.createChooser(emailIntent, "Send mail..."));
              finish();

        }
    });
}

}

Log Cat 原木猫

01-07 23:06:57.093: E/AndroidRuntime(1428): FATAL EXCEPTION: main
01-07 23:06:57.093: E/AndroidRuntime(1428): Process: com.power.it.solar, PID: 1428
01-07 23:06:57.093: E/AndroidRuntime(1428): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.power.it.solar/com.power.it.solar.add2cart}: java.lang.NullPointerException
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.os.Handler.dispatchMessage(Handler.java:102)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.os.Looper.loop(Looper.java:137)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.ActivityThread.main(ActivityThread.java:4998)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at java.lang.reflect.Method.invokeNative(Native Method)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at java.lang.reflect.Method.invoke(Method.java:515)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at dalvik.system.NativeStart.main(Native Method)
01-07 23:06:57.093: E/AndroidRuntime(1428): Caused by: java.lang.NullPointerException
01-07 23:06:57.093: E/AndroidRuntime(1428):     at com.power.it.solar.add2cart.onCreate(add2cart.java:35)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.Activity.performCreate(Activity.java:5243)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-07 23:06:57.093: E/AndroidRuntime(1428):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)

from where you are sending 从您发送的地方

 Intent intent = new Intent();
 intent.setClass(this, Other_Activity.class);
 intent.putExtra("EXTRA_ID", "SOME DATAS");
 startActivity(intent);

to where you are receiving 到您收到的地方

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null) {
 String datas= extras.getString("EXTRA_ID");
 if (datas!= null) {
    // do stuff
 }        
 }

The Bundle will pass to another activity if you are starting the activity using the startActity() or startActivityForResult and putting the Bundle as extra. 如果您要使用startActity()或startActivityForResult来启动活动并将Bundle作为额外的活动,则Bundle将传递给另一个活动。 Check if you are getting the bundle(bundle is not null) before getting data from the bundle. 从包中获取数据之前,请检查是否要获取包(包不为null)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM