我想知道Android是否支持使用一些静态组件制作容器,并将其中的活动包含在其中 我有一个带有一些onClickListener事件的滑动菜单,我不想为每个活动设置这些事件。
答案 0 :(得分:3)
如果我理解正确,您可以使用多个活动共有的功能,并且您不希望在所有活动中重复相同的代码。相反,你想在一个地方做到这一点。
实现此目的的一种方法是创建超类活动,将公共代码放在该活动中,然后使用其他活动扩展它。例如,
public class BaseActivity extends Activity implements OnClickListener {
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.my_button);
button.setOnClickListener(this);
}
...
@Override
public void onClick(View view) {
int id = view.getId();
switch(id) {
case R.id.my_button:
// perform action
break;
}
}
}
然后将其扩展为
public class Activity1 extends BaseActivity {
/...
}
public class Activity2 extends BaseActivity {
/...
}
public class Activity3 extends BaseActivity {
/...
}
答案 1 :(得分:1)
我不确定我理解你的问题,你能否详细说明一下?甚至可能会发布您当前使用的一些示例代码。
据我所知,你应该能够通过制作自己的CustomActivity来实现你想要的东西
public class CustomActivity extends Activity {
//put your slidingmenu stuff here
}
然后在您想要使用该共享片段的所有其他活动中,请执行以下操作:
public class AnotherActivity extends CustomActivity {
//...
}
使用extends CustomActivity
代替通常的extends Activity
答案 2 :(得分:0)
这就是我解决问题的方法:
我做的第一件事是创建我的主类,它将托管公共代码。 例如:
public abstract class main extends activity(){
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResourceId());
// Your common code here
}
protected abstract int getLayoutResourceId();
}
然后你需要的就是在你的活动中扩展这个类:
public class HelloActivity extends main{
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_hello);
super.onCreate(savedInstanceState);
//make sure to put setcontentview before super.oncreate
}
@Override
protected int getLayoutResourceId() {
return R.layout.activity_hello;
}
}
答案 3 :(得分:-1)
所有活动都需要在Manifest中注册。对于常见的事情,例如幻灯片菜单,您可以使用片段作为幻灯片菜单。