从扩展MainActivity的类中调用public void

时间:2018-07-05 17:48:45

标签: java android

我正在尝试将Main Activity扩展到另一个类中,以便可以使用已经在Main Activity中创建的对象。

如果我有主要活动:

public class MainActivity extends AppCompatActivity {


    public ImageView jani;

    public Context main;

    public classextended janitest = new classextended();

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

        jani = findViewById(R.id.jani);

        main=this;

        janitest.janiaha();




        Log.d("jani","FAK");



    }

}


enter code here

然后是扩展MainActivitiy的新类:

enter code here

public class classextended extends MainActivity {


    public void janiaha(){

        jani.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Toast.makeText(main, "YES YOU KNOW YOUR JAVA!!!", Toast.LENGTH_SHORT).show();



            }
        });

    }
}

我如何接受公开无效的janiaha()?还是我做错了一切:)?

我得到的是崩溃---是的,我可以使用静态类,但据我所知内存泄漏将是一个真正的问题。

2 个答案:

答案 0 :(得分:1)

您不能调用未在主类上定义的子类的方法。如果要从MainActivity派生多个类,请使其成为MainActivity上受保护的函数,该函数可以是抽象的或具有默认实现,然后在子类中重写它。如果您不打算拥有多个子类,那么我质疑甚至拥有一个子类的价值。

答案 1 :(得分:0)

您不能从子类到父类调用方法。如果你想让一个函数做类似的工作,那么你可以创建一个普通的类来做。或者您可以在本堂课中做到这一点。您只需将方法设为“静态”即可。

    public static void janiaha(ImageView jani){

    jani.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Toast.makeText(main, "YES YOU KNOW YOUR JAVA!!!", Toast.LENGTH_SHORT).show();



        }
    });

}