Android - 在类中访问类中的var

时间:2016-06-29 16:14:11

标签: java android

我正在制作一个包含我所有应用程序的模块。在此模块中,重写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);
}

1 个答案:

答案 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();
}