user1778625
user1778625

Reputation: 131

null pointer reference android java

Hey guys i have funny little bug that i have been trying to figure now keep in mind i am student. Would like to know why it is happening ill display the class and where the error is occuring. Thankyou in advanced.

                package com.example.assignment;


          import android.app.Activity;
          import android.content.Intent;
          import android.database.Cursor;
          import android.database.SQLException;
          import android.database.sqlite.SQLiteDatabase;
          import android.os.Bundle;
          import android.util.Log;
          import android.view.Menu;
          import android.view.MenuInflater;
          import android.view.MenuItem;
          import android.view.View;
          import android.view.View.OnClickListener;
          import android.widget.Button;
          import android.widget.EditText;
          import android.widget.TextView;


    public class ViewRate extends Activity implements  OnClickListener {

private int rowID;
private TextView codetv;
private TextView signtv;
private TextView ratetv;
private final String dbName="CurrencyDB";
private final String tableName="Rates";
SQLiteDatabase sampleDB=null;   
//
EditText torate, fromrate;
Button convertto,convertfrom;
TextView conRate;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewrate);
    setViews();     
    Bundle extra=getIntent().getExtras();
    rowID=extra.getInt(MainActivity.ROW_ID); 
    fillViews();        
    convertto = (Button)findViewById(R.id.convertto);       
    convertfrom =(Button)findViewById(R.id.convertfrom);
    convertfrom.setOnClickListener(from);
    convertto.setOnClickListener(to);}

private OnClickListener to = new OnClickListener() { <-------ERROR

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        //converttocur();
                       conRate.setText("pressed"); <------testing still wont work
    }
};
   private OnClickListener from = new OnClickListener() { <--------ERROR

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        //convertfromcur();
        conRate.setText("pressed"); <--------testing
    }
      };

        private void convertfromcur() {
    // TODO Auto-generated method stub
    try {
        double val = Double.parseDouble(ratetv.getText().toString());
        double val2 = Double.parseDouble(fromrate.getText().toString());
        double com = (val / val2);

        conRate.setText("RATE:" + com);


    } catch (Exception e) {
        // TODO: handle exception
        conRate.setText("Error");
    }
}



private void converttocur() {
    // TODO Auto-generated method stub
    try {
        double val = Double.parseDouble(ratetv.getText().toString());
        double val2 = Double.parseDouble(torate.getText().toString());
        double com = (val * val2);          
        conRate.setText("RATE:" + com);         

    } catch (Exception e) {
        // TODO: handle exception
        conRate.setText("Error");
    }

}

private void fillViews() {
    // TODO Auto-generated method stub
    try{
        sampleDB=this.openOrCreateDatabase(dbName, MODE_PRIVATE, null);
        Cursor c = sampleDB.rawQuery("Select * from " +tableName+" where id                      ?", new String[] {String.valueOf(rowID)}); 
        if(c!=null && c.moveToFirst()==true){               
            String code=c.getString(c.getColumnIndex("Code"));
            String sign=c.getString(c.getColumnIndex("Sign"));
            String rate=c.getString(c.getColumnIndex("Rate"));
            codetv.setText(code);
            signtv.setText(sign);
            ratetv.setText(rate);         
        }           
    }
    catch(SQLException e){
        Log.e(getClass().getSimpleName(),"Could not open database");
    }
    finally{
        if(sampleDB!=null){
            sampleDB.close();
        }
    }
}

private void setViews() {
    // TODO Auto-generated method stub
    codetv=(TextView)findViewById(R.id.code);
    signtv=(TextView)findViewById(R.id.sign);
    ratetv=(TextView)findViewById(R.id.rate);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater=getMenuInflater();
    inflater.inflate(R.menu.viewtask,menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub

    switch(item.getItemId()){
    case R.id.edit:
        getEdit();
        return true;
    case R.id.delete:
        getDelete();
        return true;
    default:
         return super.onOptionsItemSelected(item);
    }
}

private void getDelete() {
    //TODO Auto-generated method stub
    try{
        sampleDB=this.openOrCreateDatabase(dbName, MODE_PRIVATE,null);
        sampleDB.delete(tableName, "id= "+rowID,null);
    }

    catch(SQLException e){
        Log.e(getClass().getSimpleName(),"Could not open dB");
    }
    finally {
        if(sampleDB!=null){
            sampleDB.close();
        }

    }
}

private void getEdit(){
    //TODO Auto-generated method stub
    Intent addEdit=new Intent(this,AddEdit.class);
    addEdit.putExtra("ID",rowID);
    addEdit.putExtra("code",codetv.getText().toString());
    addEdit.putExtra("sign",signtv.getText().toString());
    addEdit.putExtra("rate",ratetv.getText().toString());
    startActivity(addEdit);
}



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

}

   }

And so the error is on the button clicks and i getting this error message

  E/AndroidRuntime(2524): FATAL EXCEPTION: main
  E/AndroidRuntime(2524): java.lang.NullPointerException
  E/AndroidRuntime(2524):at .example.assignment.ViewRate.converttocur(ViewRate.java:96)
  E/AndroidRuntime(2524):at com.example.assignment.ViewRate.access$0(ViewRate.java:86)
  E/AndroidRuntime(2524):at com.example.assignment.ViewRate$1.onClick(ViewRate.java:55)
  E/AndroidRuntime(2524):   at android.view.View.performClick(View.java:4202)
  E/AndroidRuntime(2524):   at android.view.View$PerformClick.run(View.java:17340)
  E/AndroidRuntime(2524):   at android.os.Handler.handleCallback(Handler.java:725)
  E/AndroidRuntime(2524):   at android.os.Handler.dispatchMessage(Handler.java:92)
  E/AndroidRuntime(2524):   at android.os.Looper.loop(Looper.java:137)
  E/AndroidRuntime(2524):at android.app.ActivityThread.main(ActivityThread.java:5039)
  E/AndroidRuntime(2524):at java.lang.reflect.Method.invokeNative(Native Method)
  E/AndroidRuntime(2524):   at java.lang.reflect.Method.invoke(Method.java:511)
  E/AndroidRuntime(2524):at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
   E/AndroidRuntime(2524):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
 E/AndroidRuntime(2524):    at dalvik.system.NativeStart.main(Native Method)

so here is the other logcat

  E/AndroidRuntime(2743): FATAL EXCEPTION: main
  E/AndroidRuntime(2743): java.lang.NullPointerException
  E/AndroidRuntime(2743):   at com.example.assignment.ViewRate$1.onClick(ViewRate.java:56)
  E/AndroidRuntime(2743):   at android.view.View.performClick(View.java:4202)
  E/AndroidRuntime(2743):   at android.view.View$PerformClick.run(View.java:17340)
  E/AndroidRuntime(2743):   at android.os.Handler.handleCallback(Handler.java:725)
  E/AndroidRuntime(2743):   at android.os.Handler.dispatchMessage(Handler.java:92)
  E/AndroidRuntime(2743):   at android.os.Looper.loop(Looper.java:137)
  E/AndroidRuntime(2743):   at android.app.ActivityThread.main(ActivityThread.java:5039)
  E/AndroidRuntime(2743):   at java.lang.reflect.Method.invokeNative(Native Method)
  E/AndroidRuntime(2743):   at java.lang.reflect.Method.invoke(Method.java:511)
  E/AndroidRuntime(2743):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
 E/AndroidRuntime(2743):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  E/AndroidRuntime(2743):   at dalvik.system.NativeStart.main(Native Method)

Upvotes: 1

Views: 189

Answers (5)

Chirag Limbachiya
Chirag Limbachiya

Reputation: 1

Blockquote

just change your code::

Blockquote

you have implemented onClickListener in your activity so definetly you will get it's override method onClick so just in that method write your button click event conditionally like

 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 if(v.getId == R.id.convertto)
 {
   //Here write you code when converTo button Clicked
 }
 else if(v.getId == R.id.converfrom)
 {
    //Here write your code when converfrom button clicked 
 }

}

Upvotes: 0

Vishesh Chandra
Vishesh Chandra

Reputation: 7071

I have seen your code, you missed this line under onCreate method to initialize the Textview conRate so by default it initialize by null and you are referring conRate.setText("") where conRate is null thats why you are getting NullPointerException on OnClick.

conRate =(TextView)findViewById(R.id.conRate);

Hope this will help you...:)

Upvotes: 1

Chirag Limbachiya
Chirag Limbachiya

Reputation: 1

Plz first check your all UI components are referenced well in your java file means in activity. this may be the place where you get NPE.

also you are accessing intent value from other activity in onCreate() method so olz confirm that you will get value in intent or you get null value

Upvotes: 0

midhunhk
midhunhk

Reputation: 5554

I think you have missed the following in your onCreate()

torate = (EditText) findViewById(R.id.to_rate) 
ratetv = (TextView) findViewById(R.id.rate_tv)

Upvotes: 0

Makoto
Makoto

Reputation: 106389

One of these values is null:

  • ratetv
  • torate
  • ratetv.getText()
  • torate.getText()

You cannot dereference null (essentially, you cannot call methods on a null value), so you get a NullPointerException.

Upvotes: 1

Related Questions