简体   繁体   中英

Call public void from class that extends MainActivity

I am trying to extend Main Activity in another class so that i can use objects already created in the Main Activity.

if i have a 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

And then a new class that extends 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();



            }
        });

    }
}

How can i acces the public void janiaha() ? Or am i doing it all wrong : ) ?

Al i get is crashes--- yes i could use static classes but as far as i know memory leaks would be a reall problem.

You can't call methods of a subclass that aren't defined on the main class. If you mean to have multiple classes descended from MainActivity, make it a protected function on MainActivity that's either abstract or has a default implementation, then override it in the subclass. If you aren't planning on having multiple child classes, then I question the value of even having one.

U cant call a method from child class to a parent class. If u want to have a function do similar work like it then, U can create a normal class to do it. or u can do this in this class. u just have to make the method 'static'..

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



        }
    });

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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