My *_*God 1 java android nullpointerexception
我试图调用getFailureDialog()接口的方法OnSelectedListener.该方法实现于MainActivity.java.但是当我调用该方法时,我得到空指针异常.
我知道它因为OnSelectedListener仍未初始化而你正在调用getFailureDialog()未初始化的对象.显然,接口方法永远不会被初始化.但那我如何getFailureDialog()从班上调用这个方法Common.java呢?
我只在下面放置相关的源代码 -
源代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
Common.java
public class Common
{
OnSelectedListener mCallback;
public interface OnSelectedListener
{
public void getFailureDialog();
}
public void myRecord(String email)
{
mCallback.getFailureDialog(); //null pointer exception here
}
}
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
public class MainActivity implements Common.OnSelectedListener
{
@Override
public void getFailureDialog()
{
RecordFailure fd = new RecordFailure();
fd.show(getSupportFragmentManager(), "dialog");
}
}
Run Code Online (Sandbox Code Playgroud)
错误日志
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)
Run Code Online (Sandbox Code Playgroud)
OnSelectedListener mCallback;
Run Code Online (Sandbox Code Playgroud)
永远不会被初始化,或者正在使用空值进行初始化.
public class Common
{
OnSelectedListener mCallback = new OnSelectedListener(){
public void getFailureDialog(){
JOptionPane.showMessageDialog(null, "An Error Has Occurred.");
}
};
public interface OnSelectedListener
{
public void getFailureDialog();
}
public void myRecord(String email)
{
mCallback.getFailureDialog(); //now this works.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15089 次 |
| 最近记录: |