I am trying to call the method getFailureDialog()
of the interface OnSelectedListener
.
The method is implemented in MainActivity.java
. But when I call the method, I am getting
the null pointer exception.
I know that its because OnSelectedListener
is still not initialized and you are calling getFailureDialog()
on uninitialized object. Obviously, interface methods are never initialized. But then how do I call the method getFailureDialog()
from my class Common.java
?
I am placing only the relevant source code below-
Source code:
SharedFragment.java
public class SharedFragment extends DialogFragment
{
Bundle bundle = getArguments();
final String email = bundle.getString("email");
Thread t=new Thread(new Runnable()
{
public void run() {
common.myRecord(email);
}
}); t.start();
}
Common.java
public class Common
{
OnSelectedListener mCallback;
public interface OnSelectedListener
{
public void getFailureDialog();
}
public void myRecord(String email)
{
mCallback.getFailureDialog(); //null pointer exception here
}
}
MainActivity.java
public class MainActivity implements Common.OnSelectedListener
{
@Override
public void getFailureDialog()
{
RecordFailure fd = new RecordFailure();
fd.show(getSupportFragmentManager(), "dialog");
}
}
Error Log
03-22 15:50:39.032: W/dalvikvm(20796): threadid=16: thread exiting with uncaught exception (group=0x4204c450)
03-22 15:50:39.052: E/AndroidRuntime(20796): FATAL EXCEPTION: Thread-30126
03-22 15:50:39.052: E/AndroidRuntime(20796): java.lang.NullPointerException
03-22 15:50:39.052: E/AndroidRuntime(20796): at com.cornmail.util.Common.myRecord(Common.java:2062)
You have to redesign your code man, make Common class implement
OnSelectedListener
interface. So separateOnSelectedListener
as outer interface not as inner interface.i will code it like this.
then
Common
class should be like thisand this code will run smoothly. if you need to implement the getFailureDialog in MainActivity, make this Common class as abstract class.
Common class will be like this
now your
MainActivity
class can extend from this class to implement the missing part.here is the source code for the
OnSelectedListener
. Since that is an interface, you have to initialize it using new and overriding theonSelected()
method OR let your class implement this listenerYou need to modify Common and MainActivity. In Common add a basic constructor. Then activate the callback as shown in startMyCallback.
Common.java
MainActivity.java
add a method in
now use the
setOnSelectedListener()
to initialize your listenerbut from you code you might need to implement another listener in your
SharedFragment
too.is never getting initialized, or is being initialized with a null value.