好的,如果你再次需要同样的东西,你如何编写代码?就像在我的情况下,我已经实现了像下面的代码一样的全屏广告,当按钮按下时我在另一个活动中需要相同的东西,但我不想写所有的代码,我想打电话来自之前的活动。 我试过了
Cover cc=new Cover();
cc.showIndustrial();
但它给我一个空指针异常。 我想做的是为Industrial广告创建一个新类,并在那里编写完整的代码,如果需要,可以从另一个类调用。我们怎么做?
我已将非商业性广告投放到活动上,就像这样
public class Cover extends AppCompatActivity{
public static String DEFAULT = "en";
InterstitialAd mInterstitialAd;
AdRequest adRequest;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-xxx-xxx-xxx");
adRequest = new AdRequest.Builder().addTestDevice("0F7B337499FCAAA05252B09EFC57223C").build();
mInterstitialAd.loadAd(adRequest);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
showInterstitial();
}
});
}
private void showInterstitial() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
任何帮助将不胜感激! ;)
答案 0 :(得分:1)
创建一个新的辅助类类:
public class AdsHelper {
static InterstitialAd mInterstitialAd;
static AdRequest adRequest;
public static void showAd(Activity activity) {
mInterstitialAd = new InterstitialAd(activity);
mInterstitialAd.setAdUnitId("ca-app-pub-xxx-xxx-xxx");
adRequest = new AdRequest.Builder().addTestDevice("0F7B337499FCAAA05252B09EFC57223C").build();
mInterstitialAd.loadAd(adRequest);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
showInterstitial();
}
});
}
public static void showInterstitial() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
并在您的2项活动中使用它:
public class Cover extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AdHelper.showAd(this); // this will show the ad
}
答案 1 :(得分:1)
您需要为另一个Activity创建一个新实例,然后使用新实例调用expecific方法但是......这是一个非常糟糕的选项。
抽象你的代码创建一个新类,例如:
您的活动
public class MyActivity extends AppCompatActivity{
//...............another irrelevant code
Cover mMyCoverClass = new Cover(MyActivity.this)
mMyCoverClass.MyMethod();
}
您的公开封面课程
public final class Cover
{
private static Context context;
public Cover(Context context)
{
this.context = context;
}
public void MyMethod()
{
//.........do something or retrieve something
}
}//end CoverClass
答案 2 :(得分:0)
在任何公共类中创建泛型函数,并在需要时调用函数使其成为公共静态函数并根据条件传递参数。然后在整个项目的任何地方调用它。
答案 3 :(得分:0)
此:
Cover cc=new Cover();
一定会以某种方式咬你的屁股。这不是实例化活动的正确方法。
我建议的是有一个名为BaseActivity
的类,它扩展AppCompatActivity
并且有一个名为showAd
的公共方法,然后让所有其他活动扩展{{1} }}。这样,您只需在您希望展示广告的每个广告中调用BaseActivity
,而无需在十几个地方重新声明相同的方法。
答案 4 :(得分:0)
尝试此代码进行类调用IndustryDetails在其中编写一个方法(如果需要,可以使用参数)。
public static void getInsustryDetails() {
//Your code to show the details of the industry.
}
如果要显示行业详细信息,请调用此方法。 例如。 IndustryDetails.getIndustryDetails();
来自任何活动。
答案 5 :(得分:0)
尝试将Ad代码放在不同的方法中(即getAdd),然后在下面的代码中写下要调用该方法的代码:
((Core) getApplicationContext).getAdd();
你在这里做的是你正在创建一个Cover类的对象。现在发生的事情是,无论何时创建类的对象(即Cover cc = new Cover),对象cc每次都将为null,因为您正在创建一个新对象。这就是你得到NullPointerException的原因。因此,如果不创建新对象,请尝试调用该方法。