我想知道 Android 是否支持使用一些静态组件制作容器并将我的活动包含在其中的可能性。
我有一个带有一些 onClickListener 事件的滑动菜单,我不想为每个活动设置这些事件。
问问题
2093 次
4 回答
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 {
/...
}
于 2013-02-19T21:09:09.897 回答
1
我不确定我是否理解您的问题,您能否再详细说明一下?甚至可能发布一些您当前正在使用的示例代码。
据我所知,您应该能够通过制作自己的 CustomActivity 来实现您想要的
public class CustomActivity extends Activity {
//put your slidingmenu stuff here
}
然后在您想要使用该共享部分的所有其他活动中执行以下操作:
public class AnotherActivity extends CustomActivity {
//...
}
用extends CustomActivity
而不是通常的extends Activity
于 2013-02-19T20:55:36.200 回答
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;
}
}
于 2013-03-19T20:33:20.793 回答
-1
所有活动都需要在 Manifest 中注册。对于常见的东西,例如幻灯片菜单,您可以使用 Fragment 作为幻灯片菜单。
于 2013-02-19T20:55:54.387 回答