我正在制作一个包含我所有应用程序的模块。在此模块中,重写onCreate
以执行我喜欢在我的所有应用中执行的代码,例如使用SupportActionBar
。在我的所有应用程序中,我一直坚持保留工具栏元素id
toolbar
。我希望重写的函数访问它,而不实际给它id。我不想做super.onCreate(savedInstanceState, R.id.toolbar)
但super.onCreate(savedInstanceState, R.class)
或相关,并获得函数来自行获取变量,例如:
// In custom parent class
protected void onCreate(Bundle savedInstanceState, Class r) {
super.onCreate(savedInstanceState);
Toolbar t = findViewById(r.getClass("id").getInt("toolbar"));
setSupportActionBar(t);
}
// Main func
// Extends class in which above function resides
@Override
protected void onCreate(Bundle b) {
super.onCreate(b, R.class);
}
答案 0 :(得分:0)
参数中应该是Resources类的对象。所以:
// In custom parent class ( extends android.support.v7.app.AppCompatActivity )
public void doStuff(Resources r) {
Toolbar t = findViewById(r.getClass("id").getInt("toolbar"))
setSupportActionBar(t);
}
// Main func
// Extends class in which above function resides
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
doStuff(getResources()); //we have Resources
}
但我不明白发送R作为方法参数的目的是什么。它可以这样做:
// In custom parent class
public void doStuff() {
Toolbar t = findViewById(getResources().getClass("id").getInt("toolbar"))
setSupportActionBar(t);
}
// Main func
// Extends class in which above function resides
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
doStuff();
}