我尝试Toast Message界面。如果应用程序没有连接互联网,我想要显示Toast消息,我想要java接口。
这是MotherActivity.java
。此文件实现ToastMessagges.ToastMessaggeCallback
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();
}
}
这是我的ToastMessagges.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();
抱歉英语不好。 请帮忙。 谢谢。
答案 0 :(得分:3)
您尚未初始化ToastMessaggeCallback toastMessaggeCallback
。
要执行此操作,请写
ToastMessaggeCallback toastMessaggeCallback = new ToastMessaggeCallback(){
public void LongToastMessagge(){
// add some toasting code here
}
};
这将使一个对象实现您的接口(称为“匿名类”)。当然,您的ToastMessaggeCallback
应该在方法LongToastMessagge
中执行某些操作,因此请在那里添加所需的代码。
答案 1 :(得分:1)
我建议您创建Util
课程,而不是Interface
。我在这里给你一个Util
类的例子。
public class Util {
public static void showToast(Context context, String text) {
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
}
然后从您的活动中调用showToast()
方法,如下所示......
Util.showToast(YourActivity.this, "text");
<强>更新强>
将您的Interface
声明为个人,而不是如下所示......
public interface ToastMessaggeCallback {
public void showLongToastMessagge(String text);
}
然后执行Interface
,如下所示......
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();
}
}
答案 2 :(得分:0)
您的ToastMessagges
类需要提供注册回调的方法。然后,在构造Activity
对象之后,您的ToastMessages
需要调用此方法将自身注册为回调。