[英]How can I give Interface a boolean variable?
我的界面是这个
public interface AndroidStuff {
public void adShower();
public void shareActivity();
}
我需要给它一个boolean watched
的boolean watched
而不是对其进行初始化,然后在实现此接口的主要Android类中修改该布尔值,以便可以从非Android类中检查它是否为false或true(我正在使用LibGdx) 。
这是AndroidApplication
类:
public class AndroidLauncher extends AndroidApplication implements AndroidStuff {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MyGdxGame(this), config);
HeyzapAds.start("1",this);
IncentivizedAd.fetch();
}
@Override
public void adShower() {
IncentivizedAd.display(this);
IncentivizedAd.fetch();
IncentivizedAd.setOnIncentiveResultListener(new HeyzapAds.OnIncentiveResultListener() {
@Override
public void onComplete(String tag) {
}
@Override
public void onIncomplete(String tag) {
}
});
}
@Override
public void shareActivity() {
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
我需要从非Android类检查是否已调用onComplete
。
您不能将实例变量放在Java的接口中,但是您可以做的是:
public interface AndroidStuff
{
boolean getWatched();
// Your other methods...
}
然后在实现该接口的类中:
public class ExampleClass implements AndroidStuff
{
private boolean watched;
@Override
public boolean getWatched()
{
return watched; // Or whatever logic you like
}
// The rest of the class...
}
如果要使用界面,可能要这样做。 否则,只需将AndroidStuff
为abstract class
。
更新后,将在onComplete()中更新的简单静态字段如何处理?
public class AndroidLauncher extends AndroidApplication implements AndroidStuff {
public static boolean isWatched;
// on onComplete() set true;
}
所有接口变量必须是public static和final。 因此您无法更改它们。 您需要的是一个abstract class
。
编辑:在您的情况下; 您需要从应用程序类内部的onComplete回调到其他地方。
有两种可能的解决方案:1.您可以像这样使用静态标志变量
public class AndroidLauncher extends AndroidApplication implements AndroidStuff{
public static boolean isAdShown = false;
....onComplete(){
isAdShown = true;
}
}
然后像这样在otherclass里面检查
if(AndroidLauncher.isAdShown) ....
在应用程序类中定义一个接口,该接口可为您提供回调:
public class AndroidLauncher extends AndroidApplication implements AndroidStuff{ private CallBack callback; public void registerCallBack(Callback callback){ this.callback = callback; } public interface CallBack{ void onAdShown(); } }
现在; 让您的其他类注册回调并提供该回调的实现;
public OtherClass implements AndroidLauncher.CallBack{
public OtherClass(){
instanceOfApplicationClass.registerCallback(this);
}
@Override
public void onAdShown(){
//here you get the callback when ad is shown
}
}
public interface AndroidStuff {
public void adShower();
public void shareActivity(boolean isChecked);
}
然后在活动中实现它时,您将获得该变量以供使用
public class AndroidLauncher extends AndroidApplication implements AndroidStuff {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MyGdxGame(this), config);
HeyzapAds.start("1",this);
IncentivizedAd.fetch();
}
@Override
public void adShower() {
IncentivizedAd.display(this);
IncentivizedAd.fetch();
IncentivizedAd.setOnIncentiveResultListener(new HeyzapAds.OnIncentiveResultListener() {
@Override
public void onComplete(String tag) {
}
@Override
public void onIncomplete(String tag) {
}
});
}
@Override
public void shareActivity(boolean isChecked) {
//here youwill get boolean variable for use
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
@Override
protected void onResume() {
super.onResume();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.