我正在尝试将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()?还是我做错了一切:)?
我得到的是崩溃---是的,我可以使用静态类,但据我所知内存泄漏将是一个真正的问题。
答案 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();
}
});
}