简体   繁体   English

无法从其类调用 MainActivity 方法

[英]Can't call MainActivity methods from its class

I looked everywhere and couldn't find what's wrong with my code, I am simply trying to call a MainActivity method from its own class:我到处找,找不到我的代码有什么问题,我只是想从它自己的类中调用 MainActivity 方法:

MainActivity.java:主活动.java:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    TestiClass testi = new TestiClass(this,this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void testi_method(){

    }

}

TestiClass.java: TestiClass.java:

import android.app.Activity;
import android.content.Context;

public class TestiClass {

    private Activity mActivity;
    private Context mContext;

    TestiClass(Activity activity ,Context context){
        this.mActivity = activity;
        this.mContext = context;
    }

    void test(){
        mActivity.testi_method(); //????
    }

}

mActivity.testi_method() says - cannot resolve method... Any Thoughts? mActivity.testi_method()说 - 无法解析方法......有什么想法吗?

If this must be your implementation then it is an easy fix:如果这必须是您的实现,那么它很容易解决:

private final MainActivity mainActivity;
private final Context context;

TestiClass(MainActivity mainActivity, Context context){
    this.mainActivity = mainActivity;
    this.context = context;
}

Dont Use Activity, Use The Class you want to call the method.不要使用活动,使用您要调用方法的类。 here is fix:这是修复:

   import android.app.Activity;
   import android.content.Context;

   public class TestiClass {

   private MainActivity  mActivity;
   private Context mContext;

   TestiClass(MainActivity activity ,Context context){
    this.mActivity = activity;
    this.mContext = context;
     }

     void test(){
      mActivity.testi_method(); 
      }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM