title: NullPointerException On Android.os.Bundle
body: <p>I have some problem with my code, when I need to transfer some data from one <code>Activity</code> to another one. 
  First <code>Activity</code> (<code>ViewCashflow</code>) and I want transfer some data from <code>ViewCashflow</code> to second <code>Activity</code> (<code>NewTransaction</code>). Here its working well with no error, the data transferred successfully. But, I don't know what's going on when I run the second <code>Activity</code> directly (not from first <code>Activity</code> like before when I transfer the data) I got null pointer exception on the method that I use to receive the data from first <code>Activity</code>.</p>
  
  <p>I have tried to figure all things there, but still unsolved. In other <code>Activity</code> (<code>ViewCategory</code> and <code>AddCategory</code>) I'm doing the same things (transfer data from <code>ViewCategory</code> to <code>AddCategory</code>) its working well and there's no error when I run <code>AddCategory</code> directly but the code is exactly have same pattern with the two <code>Activity</code> which I got the error.</p>
  
  <p>Please master help me.
  Thanks before.</p>
  
  <p>The error report gimme this one:</p>
  
  <blockquote>
    <p>Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.getBoolean(java.lang.String)' on a null object reference
                at com.example.ever_ncn.cashflow.NewTransaction.onCreate(NewTransaction.java:68)</p>
  </blockquote>
  
  <p>NB. This my code for first <code>Activity</code> (<code>ViewCashflow</code>)</p>
  
  <pre><code>public class ViewCashflow extends ActionBarActivity {
  private SQLiteDatabase db;
  private static Button BtnIAddCateg;
  private static Button BtnICancelCateg;
  private static final String TAG = CategorySetting.class.getSimpleName();
  DatabaseHelper dBHelper = new DatabaseHelper (this);
  private ListView list;
  
  private ArrayList&lt;String&gt; arrTransId = new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrTransName = new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrTransAmount = new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrTransType= new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrTransDate= new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrCategId= new ArrayList&lt;String&gt;();
  private AlertDialog.Builder build;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_view_cashflow);
      displayData();
  }
  
  //udah beres udah bisa show, tinggal action click udh bisa tp value blm pindah,,
  //penggunaan Radio Button belum nanti di NewTrans
  private void displayData() {
      db = dBHelper.getReadableDatabase();
      Cursor mCursor = db.rawQuery("SELECT * FROM " + dBHelper.TABLE_Trans_NAME, null);
      list = (ListView)findViewById(android.R.id.list);
      arrTransId.clear();
      arrTransName.clear();
      arrTransAmount.clear();
      arrTransType.clear();
      arrTransDate.clear();
      arrCategId.clear();
      if (mCursor.moveToFirst()) {
          do {
              arrTransId.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.TOL1)));
              arrTransName.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.TOL2)));
              arrTransAmount.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.TOL3)));
              arrTransType.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.TOL4)));
              arrTransDate.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.TOL5)));
              arrCategId.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.TOL6)));
  
          } while (mCursor.moveToNext());
      }
      DisplayAdapterTrans disadptr = new DisplayAdapterTrans(ViewCashflow.this, arrTransId, arrTransName,
                                  arrTransAmount, arrTransType, arrTransDate, arrCategId);
      list.setAdapter(disadptr);
      mCursor.close();
  
      list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView&lt;?&gt; arg0, View arg1, int arg2, long arg3) {
              //click to update data
              // namanya blom diubah coeg
              Intent i = new Intent(getApplicationContext(), NewTransaction.class);
              i.putExtra("TransId", arrTransId.get(arg2));
              i.putExtra("TransName", arrTransName.get(arg2));
              i.putExtra("TransAmount", arrTransAmount.get(arg2));
              i.putExtra("TransType", arrTransType.get(arg2));
              i.putExtra("TransDate", arrTransDate.get(arg2));
              i.putExtra("TransCategId", arrCategId.get(arg2));
              i.putExtra("update", true);
              startActivity(i);
          }
      });
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_view_cashflow, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
  
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
          return true;
      }
  
      return super.onOptionsItemSelected(item);
  }
  }
  </code></pre>
  
  <p>And this one for second <code>Activity</code> (<code>NewTransaction</code>)</p>
  
  <pre><code>public class NewTransaction extends ActionBarActivity {
  Button btnIDate;
  Button btnIAdd;
  Button btnICancel;
  RadioButton RdIncome;
  RadioButton RdOutcome;
  EditText txtAmount, txtCashflow, txtType;
  DatabaseHelper dbHelper = new DatabaseHelper(this);
  SQLiteDatabase db;
  MainActivity mainAct = new MainActivity();
  int year_x, month_x, day_x;
  static final int DIALOG_ID=0;
  public static long dateSelected;
  public static Integer intAmount = null;
  private boolean isUpdate;
  private String id, transname, transamount, transtype, transdate, transcategid;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_new_transaction);
      txtAmount = (EditText)findViewById(R.id.txtAmount);
      txtCashflow = (EditText)findViewById(R.id.txtCashflow);
      txtType = (EditText)findViewById(R.id.txtType);
      RdIncome = (RadioButton)findViewById(R.id.RdBtnIncome);
      RdOutcome = (RadioButton)findViewById(R.id.RdBtnOutcome);
  
      final Calendar cal = Calendar.getInstance();
      year_x = cal.get(Calendar.YEAR);
      month_x = cal.get(Calendar.MONTH);
      day_x = cal.get(Calendar.DAY_OF_MONTH);
      TextView lblIDate = (TextView)findViewById(R.id.lblDate);
  
      lblIDate.setText("Date selected : " + year_x + "-" + month_x + "-" + day_x);
      //EditText lbltxt = (EditText)findViewById(R.id.txtType);
      dateSelected = (year_x+month_x+day_x);
      String catSelected = mainAct.getCatSelected();
  
      //kena null object dsni entah knapa
  
      showDialogOnClick();
      isUpdate=getIntent().getExtras().getBoolean("update");
      if(isUpdate)
      {
          id=getIntent().getExtras().getString("TransId");
          transname=getIntent().getExtras().getString("TransName");
          transamount=getIntent().getExtras().getString("TransAmount");
          transtype=getIntent().getExtras().getString("TransType");
          transdate=getIntent().getExtras().getString("CategDate");
          transcategid=getIntent().getExtras().getString("CategCategId");
          txtCashflow.setText(transname);
          txtType.setText(transtype);
          txtAmount.setText(transamount);
      }
      if(RdIncome.isChecked()){
          txtType.setText("Income");
      }else{
          txtType.setText("Outcome");
      }
      onButtonClickButtonListener(dateSelected, catSelected);
  }
  
  public void showDialogOnClick(){
      //TextView lblIDate = (TextView)findViewById(R.id.lblDate);
  
      btnIDate = (Button)findViewById(R.id.btnDate);
      btnIDate.setOnClickListener(
              new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      showDialog(DIALOG_ID);
                  }
              }
      );
  }
  
  @Override
  protected Dialog onCreateDialog(int id){
      if (id == DIALOG_ID)
              return  new DatePickerDialog(this, dpickerListener , year_x, month_x, day_x);
      return null;
  }
  
  public DatePickerDialog.OnDateSetListener dpickerListener
          = new DatePickerDialog.OnDateSetListener() {
      @Override
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
          TextView lblIDate = (TextView)findViewById(R.id.lblDate);
          year_x= year;
          month_x = monthOfYear + 1;
          day_x = dayOfMonth;
          lblIDate.setText("Date selected : " + year_x + "-" + month_x + "-" + day_x);
          Toast.makeText(NewTransaction.this, year_x + "/" + month_x + "/" + day_x, Toast.LENGTH_LONG).show();
          //DateFormat.getDateInstance().format(myDatePicker.getCalendarView().getDate());
      }
  };
  
  private void clearText(){
      txtCashflow.clearComposingText();
      txtAmount.clearComposingText();
      txtType.clearComposingText();
  }
  
  public void onButtonClickButtonListener(final long dateSelected, final String catSelected){
          btnIAdd = (Button)findViewById(R.id.btnAddTrans);
          btnIAdd.setOnClickListener(
                  new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          /*if(RdIncome.isChecked()){
                              txtType.setText("Income");
                          }else{
                              txtType.setText("Outcome");
                          }*/
                          if (isUpdate) {
                              //update
                              Toast.makeText(NewTransaction.this, "Clicked", Toast.LENGTH_LONG).show();
                              intAmount = Integer.parseInt(txtAmount.getText().toString());
                              boolean isInserted = dbHelper.updateTransData(id, txtCashflow.getText().toString(),
                                      intAmount, txtType.getText().toString(),
                                      dateSelected, catSelected, null);
                              if (isInserted == true) {
                                  Toast.makeText(NewTransaction.this, "Inserted", Toast.LENGTH_LONG).show();
                                  clearText();
                                  Intent intent = new Intent(
                                          NewTransaction.this,
                                          ViewCashflow.class
                                  );
                                  startActivity(intent);
                              } else
                                  Toast.makeText(NewTransaction.this, "Not Inserted", Toast.LENGTH_LONG).show();
                          } else {
                              //insert
                              Toast.makeText(NewTransaction.this, "Clicked", Toast.LENGTH_LONG).show();
                              intAmount = Integer.parseInt(txtAmount.getText().toString());
                              boolean isInserted = dbHelper.insertTransData(txtCashflow.getText().toString(),
                                      intAmount, txtType.getText().toString(),
                                      dateSelected, catSelected, null);
                              if (isInserted == true) {
                                  Toast.makeText(NewTransaction.this, "Inserted", Toast.LENGTH_LONG).show();
                                  clearText();
                                  Intent intent = new Intent(
                                          NewTransaction.this,
                                          ViewCashflow.class
                                  );
                                  startActivity(intent);
                              } else
                                  Toast.makeText(NewTransaction.this, "Not Inserted", Toast.LENGTH_LONG).show();
                          }
                      }
                  });
  
          btnICancel = (Button)findViewById(R.id.btnCancelTrans);
          btnICancel.setOnClickListener(
                  new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          Intent intent = new Intent(
                                  NewTransaction.this,
                                  MainActivity.class
                          );
                          startActivity(intent);
                      }
                  }
          );
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_new_transaction_, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
  
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
          return true;
      }
  
      return super.onOptionsItemSelected(item);
  }
  }
  </code></pre>
  
  <p>here is my code for <code>CategorySetting</code>/<code>ViewCategory</code> (another <code>Activity</code> that work with this pattern of code) :</p>
  
  <pre><code>public class CategorySetting extends Activity {
  private SQLiteDatabase db;
  private static Button BtnIAddCateg;
  private static Button BtnICancelCateg;
  private static final String TAG = CategorySetting.class.getSimpleName();
  DatabaseHelper dBHelper = new DatabaseHelper (this);
  private ListView list;
  private ArrayList&lt;String&gt; arrCategId = new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrCategName = new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrCategNote = new ArrayList&lt;String&gt;();
  private ArrayList&lt;String&gt; arrCategCurr = new ArrayList&lt;String&gt;();
  private AlertDialog.Builder build;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_category_setting);
      onButtonClickButtonListener();
      //ListView list = getListView();
      //showListView();
      displayData();
      onLongClickListener();
  }
  
  private void displayData() {
      db = dBHelper.getReadableDatabase();
      Cursor mCursor = db.rawQuery("SELECT * FROM " + dBHelper.TABLE_Categ_NAME, null);
      list = (ListView)findViewById(android.R.id.list);
      arrCategId.clear();
      arrCategName.clear();
      arrCategNote.clear();
      arrCategCurr.clear();
      if (mCursor.moveToFirst()) {
          do {
              arrCategId.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.COL1)));
              arrCategName.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.COL2)));
              arrCategNote.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.COL3)));
              arrCategCurr.add(mCursor.getString(mCursor.getColumnIndex(dBHelper.COL4)));
          } while (mCursor.moveToNext());
      }
      DisplayAdapter disadpt = new DisplayAdapter(CategorySetting.this, arrCategId, arrCategName, arrCategId, arrCategCurr);
      list.setAdapter(disadpt);
      mCursor.close();
  
      list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView&lt;?&gt; arg0, View arg1, int arg2, long arg3) {
              //click to update data
              Intent i = new Intent(getApplicationContext(), AddCategory.class);
              i.putExtra("CategId", arrCategId.get(arg2));
              i.putExtra("CategName", arrCategName.get(arg2));
              i.putExtra("CategNote", arrCategNote.get(arg2));
              i.putExtra("CategCurr", arrCategCurr.get(arg2));
              i.putExtra("update", true);
              startActivity(i);
          }
      });
  }
  
  private void onLongClickListener(){
      ListView list = (ListView)findViewById(android.R.id.list);
      list.setOnItemLongClickListener(new OnItemLongClickListener() {
  
          public boolean onItemLongClick(AdapterView&lt;?&gt; arg0, View arg1, final int arg2, long arg3) {
              build = new AlertDialog.Builder(CategorySetting.this);
              build.setTitle("Delete " + arrCategName.get(arg2));
              build.setMessage("Do you want to delete ?");
              build.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
  
                  public void onClick(DialogInterface dialog, int which) {
                      Toast.makeText( getApplicationContext(),
                              arrCategName.get(arg2) + " is deleted.", Toast.LENGTH_LONG).show();
  
                      db.delete(
                              dBHelper.TABLE_Categ_NAME, dBHelper.COL1 + "=" + arrCategId.get(arg2), null);
                      displayData();
                      dialog.cancel();
                  }
              });
  
              build.setNegativeButton("No", new DialogInterface.OnClickListener() {
  
                  public void onClick(DialogInterface dialog, int which) {
                      dialog.cancel();
                  }
              });
              AlertDialog alert = build.create();
              alert.show();
  
              return true;
          }
      });
  }
  
      //ListView view = getListView();
      //iew.addHeaderView(getLayoutInflater().inflate(R.layout.trans, null));
      //db = dBHelper.getWritableDatabase();
      //this.muat_ulang();
  
  /*public void reload(){
      try {
          DatabaseHelper dbHelper = new DatabaseHelper(this.getApplicationContext());
          db = dbHelper.getWritableDatabase();
          Cursor c = db.rawQuery("SELECT CategName FROM " + tableName, null);
          if (c != null ) {
              if  (c.moveToFirst()) {
                  do {
                      String categName = c.getString(c.getColumnIndex("CategName"));
                  }while (c.moveToNext());
              }
          }
      } catch (SQLiteException se ) {
          Log.e(getClass().getSimpleName(), "Could not create or Open the database");
      } finally {
          if (db != null)
              db.execSQL("DELETE FROM " + tableName);
          db.close();
      }
  }*/
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_category_setting, menu);
      return true;
  }
  
  public void onButtonClickButtonListener(){
  
      BtnIAddCateg = (Button)findViewById(R.id.btnAddNewCateg);
      BtnIAddCateg.setOnClickListener(
              new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      Intent intentAddCateg = new Intent ("com.example.ever_ncn.cashflow.AddCategory");
                      intentAddCateg.putExtra("update", false);
                      startActivity(intentAddCateg);
                      startActivity(intentAddCateg);
                  }
              }
      );
  
      BtnICancelCateg = (Button)findViewById(R.id.btnCancelCateg);
      BtnICancelCateg.setOnClickListener(
              new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      Intent intent = new Intent(
                              CategorySetting.this,
                              MainActivity.class
                      );
                      startActivity(intent);
                  }
              }
      );
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
  
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
          return true;
      }
  
      return super.onOptionsItemSelected(item);
  }
  }
  </code></pre>
  
  <p>and this one for <code>AddCategory</code>:</p>
  
  <pre><code>public class AddCategory extends ActionBarActivity {
  private static Button BtnIAdd;
  private static Button BtnICancel;
  EditText txtcategname, txtType;
  Spinner selectCurrency;
  ArrayAdapter&lt;CharSequence&gt; adapterCurrency;
  DatabaseHelper DbHelper = new DatabaseHelper(this);
  SQLiteDatabase db;
  private boolean isUpdate;
  private String id, categname, categnote, categcurr;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_add_category);
      txtcategname = (EditText)findViewById(R.id.editText);
      txtType = (EditText)findViewById(R.id.editText2);
      BtnICancel = (Button)findViewById(R.id.btnCancel);
      BtnIAdd = (Button)findViewById(R.id.btnAdd);
  
      //spinner
      selectCurrency = (Spinner) findViewById(R.id.spin_selectCurrency);
      adapterCurrency = ArrayAdapter.createFromResource(this, R.array.CurrencyName,android.R.layout.simple_spinner_item );
      adapterCurrency.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      selectCurrency.setAdapter(adapterCurrency);
      selectCurrency.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
          @Override
          public void onItemSelected(AdapterView&lt;?&gt; parent, View view, int position, long id) {
              Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_LONG).show();
              String currencyValue = String.valueOf(parent.getSelectedItem());
          }
  
          @Override
          public void onNothingSelected(AdapterView&lt;?&gt; parent) {
  
          }
      });
  
      isUpdate=getIntent().getExtras().getBoolean("update");
      if(isUpdate)
      {
          id=getIntent().getExtras().getString("CategId");
          categname=getIntent().getExtras().getString("CategName");
          categnote=getIntent().getExtras().getString("CategNote");
          categcurr=getIntent().getExtras().getString("CategCurr");
          txtcategname.setText(categname);
          txtType.setText(categnote);
      }
      addCategData();
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_add_category, menu);
      return true;
  }
  
  public void addCategData(){
      BtnIAdd.setOnClickListener(
              new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
  
                      Toast.makeText(AddCategory.this, "Clicked", Toast.LENGTH_LONG).show();
                      db=DbHelper.getWritableDatabase();
                      ContentValues values=new ContentValues();
  
                      values.put(DbHelper.COL2,categname );
                      values.put(DbHelper.COL3,categnote );
                      values.put(DbHelper.COL4,categcurr );
  
                      System.out.println("");
                      if(isUpdate)
                      {
                          //update database with new data
                          boolean isInserted = DbHelper.updateCategData(Integer.parseInt(id), txtcategname.getText().toString(),
                                  txtType.getText().toString(), selectCurrency.getSelectedItem().toString(), null);
                          if (isInserted == true) {
                              Toast.makeText(AddCategory.this, "Updated", Toast.LENGTH_LONG).show();
                              //baru sampe dsni
                              Intent intent = new Intent(
                                      AddCategory.this,
                                      CategorySetting.class
                              );
                              startActivity(intent);
                          } else
                              Toast.makeText(AddCategory.this, "Not Inserted", Toast.LENGTH_LONG).show();
                      }
                      else
                      {
                          //insert data into database
                          boolean isInserted = DbHelper.insertCategData(txtcategname.getText().toString(),
                                  txtType.getText().toString(), selectCurrency.getSelectedItem().toString(), null);
                          if (isInserted == true) {
                              Toast.makeText(AddCategory.this, "Inserted", Toast.LENGTH_LONG).show();
                              //baru sampe dsni
                              Intent intent = new Intent(
                                      AddCategory.this,
                                      CategorySetting.class
                              );
                              startActivity(intent);
                          } else
                              Toast.makeText(AddCategory.this, "Not Inserted", Toast.LENGTH_LONG).show();
                      }
                      //close database
                      db.close();
                      finish();
                  }
              }
      );
      BtnICancel.setOnClickListener(
              new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      finish();
                  }
              }
      );
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
  
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
          return true;
      }
  
      return super.onOptionsItemSelected(item);
  }
  }
  </code></pre>