getFailureDialog()
インターフェイスのメソッドを呼び出そうとしていますOnSelectedListener
。メソッドは に実装されていMainActivity.java
ます。しかし、メソッドを呼び出すと、null ポインター例外が発生します。
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();
}
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");
}
}
エラーログ
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)