如何将方法或代码的某些部分从一个类调用到另一个类?

时间:2016-09-16 10:08:36

标签: android admob

好的,如果你再次需要同样的东西,你如何编写代码?就像在我的情况下,我已经实现了像下面的代码一样的全屏广告,当按钮按下时我在另一个活动中需要相同的东西,但我不想写所有的代码,我想打电话来自之前的活动。 我试过了

 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();
    }

任何帮助将不胜感激! ;)

6 个答案:

答案 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的原因。因此,如果不创建新对象,请尝试调用该方法。