2015-01-08 47 views
0

我必須將我的第一個活動的值傳遞給第四個活動... add2cart.java是我的第三個活動,buy_ltr.java是我的第四個活動。我想通過第三個按鈕上的按鈕點擊捆綁活動,它應該得到第四個活動,並且必須在其編輯文本字段中設置值。但它不能正常工作。請幫助我。Android:捆綁傳遞

我add2cart.java.In每次都讓我在嘗試在線仿真器出現故障,因爲零點異常

中小企業= bundl.getString(「DTLS」);

我嘗試次數,其結果

1.Pass價值觀和點擊add2cart按鈕

Intent in=getIntent(); 

    Bundle bundl=in.getExtras(); 

    sme=bundl.getString("dtls"); 

2.Intent下一頁點擊add2cart按鈕編輯text.But崩潰設定。但編輯文本字段是空白的。

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

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

3.Pass價值觀和點擊add2cart按鈕

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

     } 

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在編輯text.But崩潰設定

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[]{"[email protected]", "",}; 
       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(); 

     } 
    }); 
} 

} 

登錄貓

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) 
+1

添加您的崩潰日誌 – VicJordan

+0

也顯示您正在發送數據的代碼 –

+1

在每個代碼中,您從'Bundle'獲取'getData',但是在'Bundle'上的'setdata'在哪裏? –

回答

1

從正在發送

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

到您收到

@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 
}   
} 
1

的包將傳遞到如果在其他活動正在開始交流使用startActity()或startActivityForResult並將Bundle放在額外位置。 在從軟件包獲取數據之前,檢查您是否獲取了軟件包(軟件包不爲空)。

+0

好的,如果bundle不是null,我可以執行,sme = getstring(「dtl」);但是如果我還有其他的一部分,我應該寫些什麼呢? – droid