我的界面就是这个
public interface AndroidStuff {
public void adShower();
public void shareActivity();
}
我需要给它一个boolean watched
而不是初始化它,然后在我实现这个接口的主Android类中修改那个布尔值,所以我可以从我的非Android类检查它是假的还是真的(我正在使用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
。
答案 0 :(得分:1)
您不能在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
。
答案 1 :(得分:1)
更新后,将在onComplete()?
中更新的简单静态字段怎么样?public class AndroidLauncher extends AndroidApplication implements AndroidStuff {
public static boolean isWatched;
// on onComplete() set true;
}
答案 2 :(得分:1)
所有接口变量必须是public static和final。所以你无法改变它们。你需要的是一个abstract class
。
修改强> 在你的情况下;你需要从你的应用程序类中的onComplete回调到其他地方。
有两种可能的解决方案: 1.你可以像这样使用静态标志变量
public class AndroidLauncher extends AndroidApplication implements AndroidStuff{
public static boolean isAdShown = false;
....onComplete(){
isAdShown = true;
}
}
然后在像其他类这样的
中检查它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
}
}
答案 3 :(得分:0)
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();
}
}