Java 触发get NullPointerException时我的接口

Java 触发get NullPointerException时我的接口,java,android,interface,nullpointerexception,Java,Android,Interface,Nullpointerexception,我尝试使用Toast消息接口。如果应用程序未连接internet,我希望显示一条Toast消息,我希望使用java接口 这是MotherActivity.java。此文件实现ToastMessages.ToastMessageCallback public class MotherActivity extends ActionBarActivity implements ToastMessagges.ToastMessaggeCallback { ToastMessagg

我尝试使用Toast消息接口。如果应用程序未连接internet,我希望显示一条Toast消息,我希望使用java接口

这是
MotherActivity.java
。此文件实现ToastMessages.ToastMessageCallback

   public class MotherActivity extends ActionBarActivity implements ToastMessagges.ToastMessaggeCallback {

        ToastMessagges toastMessagges;

        @Override
        protected void onStart() {
            super.onStart();

        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_mother);

            toastMessagges      = new ToastMessagges();

            AppStarter();
        }

        private void AppStarter(){

            boolean checkinternet   = InternetControl.checkInternetConnection( getApplicationContext() );
            if( checkinternet ) {
                toastMessagges.show_toast_messagge();
            }
            else {

            }

        }

        @Override
        public void LongToastMessagge() {
            Toast.makeText(getApplicationContext(), "Hello World", Toast.LENGTH_LONG).show();


}
}
这是我的toastmessages.java文件

public class ToastMessagges {

    ToastMessaggeCallback toastMessaggeCallback;
    public void show_toast_messagge(){
        toastMessaggeCallback.LongToastMessagge();
    }


    public static interface ToastMessaggeCallback {
        public void LongToastMessagge();
    }
}
当用户启动此应用程序时。我得到NullPointerException错误

Caused by: java.lang.NullPointerException
            at com.medyasef.bulenttirasnewapp.bulenttiras.functions.ToastMessagges.show_toast_messagge(ToastMessagges.java:22)
            at com.medyasef.bulenttirasnewapp.bulenttiras.MotherActivity.AppStarter(MotherActivity.java:36)
            at com.medyasef.bulenttirasnewapp.bulenttiras.MotherActivity.onCreate(MotherActivity.java:29)
ToastMessagges.java:22

toastMessaggeCallback.LongToastMessagge();
对不起,英语不好。 请帮忙。
谢谢。

您尚未初始化您的
ToastmessageCallback ToastmessageCallback

要做到这一点,请编写

ToastMessaggeCallback toastMessaggeCallback = new ToastMessaggeCallback(){

    public void LongToastMessagge(){
        // add some toasting code here
    }

};

这将使一个对象实现您的接口(称为“匿名类”)。当然,您的
ToastmessageCallback
应该在方法
LongToastMessagge
中执行某些操作,因此在那里添加所需的代码。

您尚未初始化您的
ToastmessageCallback ToastmessageCallback

要做到这一点,请编写

ToastMessaggeCallback toastMessaggeCallback = new ToastMessaggeCallback(){

    public void LongToastMessagge(){
        // add some toasting code here
    }

};

这将使一个对象实现您的接口(称为“匿名类”)。当然,您的
ToastMessageCallback
应该在方法
LongtoastMessage
中执行某些操作,因此在那里添加所需的代码。

您的
ToastMessages
类需要提供注册回调的方法。然后,您的
活动
需要在构建
ToastMessages
对象之后调用此方法将自身注册为回调。

您的
ToastMessages
类需要提供注册回调的方法。然后,您的
活动
需要在构建
ToastMessages
对象之后调用此方法将自身注册为回调。

我建议您创建一个
Util
类,而不是
接口
。我在这里给你举一个
Util
类的例子

public class Util {

    public static void showToast(Context context, String text) {

        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();

    }

}
然后从活动中调用
showtoos()
方法,如下所示

Util.showToast(YourActivity.this, "text");
public class MotherActivity extends ActionBarActivity implements ToastMessaggeCallback {

    @Override
    protected void onStart() {
        super.onStart();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mother);

        AppStarter();
    }

    private void AppStarter(){

        boolean checkinternet   = InternetControl.checkInternetConnection( getApplicationContext() );
        if( checkinternet ) {

            showLongToastMessagge("Hello World");

        }
        else {

        }

    }

    @Override
    public void showLongToastMessagge(String text) {

        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();

   }
}
更新:

将你的
接口
声明为一个个体,而不是像下面那样在类中

public interface ToastMessaggeCallback {

    public void showLongToastMessagge(String text);

}
然后实现
接口
,如下所示

Util.showToast(YourActivity.this, "text");
public class MotherActivity extends ActionBarActivity implements ToastMessaggeCallback {

    @Override
    protected void onStart() {
        super.onStart();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mother);

        AppStarter();
    }

    private void AppStarter(){

        boolean checkinternet   = InternetControl.checkInternetConnection( getApplicationContext() );
        if( checkinternet ) {

            showLongToastMessagge("Hello World");

        }
        else {

        }

    }

    @Override
    public void showLongToastMessagge(String text) {

        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();

   }
}

我建议您创建一个
Util
类,而不是
Interface
。我在这里给你举一个
Util
类的例子

public class Util {

    public static void showToast(Context context, String text) {

        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();

    }

}
然后从活动中调用
showtoos()
方法,如下所示

Util.showToast(YourActivity.this, "text");
public class MotherActivity extends ActionBarActivity implements ToastMessaggeCallback {

    @Override
    protected void onStart() {
        super.onStart();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mother);

        AppStarter();
    }

    private void AppStarter(){

        boolean checkinternet   = InternetControl.checkInternetConnection( getApplicationContext() );
        if( checkinternet ) {

            showLongToastMessagge("Hello World");

        }
        else {

        }

    }

    @Override
    public void showLongToastMessagge(String text) {

        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();

   }
}
更新:

将你的
接口
声明为一个个体,而不是像下面那样在类中

public interface ToastMessaggeCallback {

    public void showLongToastMessagge(String text);

}
然后实现
接口
,如下所示

Util.showToast(YourActivity.this, "text");
public class MotherActivity extends ActionBarActivity implements ToastMessaggeCallback {

    @Override
    protected void onStart() {
        super.onStart();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mother);

        AppStarter();
    }

    private void AppStarter(){

        boolean checkinternet   = InternetControl.checkInternetConnection( getApplicationContext() );
        if( checkinternet ) {

            showLongToastMessagge("Hello World");

        }
        else {

        }

    }

    @Override
    public void showLongToastMessagge(String text) {

        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();

   }
}

您是否初始化了ToastMessageCallback ToastMessageCallback?我想没有。如何初始化ToastMessageCallback ToastMessageCallback?你初始化了ToastMessageCallback ToastMessageCallback吗?我想没有。如何初始化ToastMessageCallback ToastMessageCallback?第一个thanx例外1。我的英语有点弱。所以我不能确切地说。您的示例正在运行,但不需要实现。我想要覆盖ToastMessageCallback,这个接口必须在MotherActivity中工作。像这样@Override public void LongToastMessagge(){Log.d(“denemeolkun”,“喜欢这个视频”);}我必须你能理解我。我想学习界面。谢谢,第一个例外。我的英语有点弱。所以我不能确切地说。您的示例正在运行,但不需要实现。我想要覆盖ToastMessageCallback,这个接口必须在MotherActivity中工作。像这样@Override public void LongToastMessagge(){Log.d(“denemeolkun”,“喜欢这个视频”);}我必须你能理解我。我想学习界面。谢谢。首先谢谢你的帮助。但我同时想要Java接口。我的问题只是一个小问题。再一次Thanx@HamidShatu。这个样品对我来说很好用,但这不是我想要的。我想弄清楚接口结构。我的英语有点弱。再次感谢:)首先感谢你的帮助。但我同时想要Java接口。我的问题只是一个小问题。再一次Thanx@HamidShatu。这个样品对我来说很好用,但这不是我想要的。我想弄清楚接口结构。我的英语有点弱。再次感谢:)