我在A类中有一个菜单方法,它在单击时显示模拟器中的菜单。
如何将该方法用于我的新B类
我希望B类也能使用这些方法:
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//inflates the menu or this will show the activity
MenuInflater awesome = getMenuInflater();
awesome.inflate(R.menu.main, menu); //main is the xml main
return true;
}
//this will manipulate the menu
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case R.id.menuSweet:
startActivity(new Intent("Sweet"));
return true;
case R.id.menuToast:
Toast andEggs = Toast.makeText(MainActivity.this,
"This is a toast", Toast.LENGTH_LONG);
andEggs.show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:3)
根据你想做的事情,你通常有两个很大的选择(在众多中):子类和组合:
因此,如果您的B类是A类行为的特化(B 是 A的特例),请扩展A类:
class A {
public boolean onOptionsItemSelected(MenuItem item);
}
class B extends A {
// some methods only B has.
}
因此你可以致电
B b = new B();
b.onOptionsItemSelected(someItem);
第二个选项是通过它自己的同名方法将方法调用包装到A(所以B 有一个一个对象并使用它):
class B {
private A a = new A();
public boolean onOptionsItemSelected(Item someItem) {
a.onOptionsItemSelected(someItem);
}
}
答案 1 :(得分:0)
如果我没有误解,你是否期待这个?
class A
{
public boolean menu(){
System.out.println("Inside Menu");
return true;
}
}
class B
{
public void testMethod()
{
A a = new A();
System.out.println(a.menu());
}
}
public class Test
{
public static void main(String[] args) {
B b =new B();
b.testMethod();
}
}