如何从一个 class 调用方法或部分代码到另一个?

How to call method or some part of code from one class to another?

好的,如果你又需要同样的东西,你怎么写代码?就像在我的例子中,我已经实现了如下代码的全屏广告,当按下按钮时,我需要在另一个 activity 中做同样的事情,但我不想编写所有代码,我想调用之前的 [=21] =]. 我试过是

 Cover cc=new Cover();
cc.showIndustrial();

但是它给我一个空指针异常。 我想做的是为工业广告创建一个新的 class 并在那里编写完整的代码,并在需要时从另一个 class 调用。我们怎么做才简单?

我已经在 Activity 上投放了这样的插页式广告

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

如有任何帮助,我们将不胜感激!! ;)

在任何公共 class 中创建泛型函数,并在需要时调用函数使其 public 静态并根据条件传递参数。然后在整个项目的任何地方 class 调用它。

这个:

Cover cc=new Cover();

一定会以某种方式咬你的屁股。这不是实例化 activity.

的正确方法

我的建议是有一个名为 BaseActivity 的 class,它扩展了 AppCompatActivity 并有一个名为 showAd 的 public 方法,然后有您的所有其他活动都扩展了 BaseActivity。这样您就可以在每个要显示广告的地方调用 super.showAd(),而无需在许多地方重新声明相同的方法。

创建一个新助手class class:

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
}

您需要为另一个 Activity 创建一个新实例,然后使用新实例调用特定方法,但是...这是一个非常糟糕的选择。

抽象你的代码创建一个新的 class,例如:

你的activity

public class MyActivity extends AppCompatActivity{

     //...............another irrelevant code

     Cover mMyCoverClass = new Cover(MyActivity.this)
     mMyCoverClass.MyMethod();

}

你的public封面class

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

尝试此代码进行 class 调用 IndustryDetails 在其中编写一个方法(如果需要,可以使用参数)。

 public static void getInsustryDetails() {

   //Your code to show the details of the industry.
}

Call this method when you want to show the industry details. eg. IndustryDetails.getIndustryDetails();

来自任何 activity.

尝试将 Ad 代码放在不同的方法中(即 getAdd),然后在要调用该方法的地方编写以下代码:

((Core) getApplicationContext).getAdd();

您在这里所做的是创建 Cover class 的对象。现在发生的事情是,每当您创建一个 class 的对象(即 Cover cc= new Cover)时,对象 cc 每次都将为空,因为您正在创建一个新对象。这就是您获得 NullPointerException 的原因。因此,在不创建新对象的情况下尝试调用该方法。