我正在开发一款顶级菜单的Android应用程序(就像我们在网站上看到的那样;家庭,关于等等)。在所有活动中重复此菜单,因此我必须在所有活动中重复这些代码。有没有办法可以在某个类中编写一次代码并在使用继承或其他东西的所有其他活动中重用它? (只是虱子有php中的功能)。希望我的问题是直截了当的。这是我必须在任何地方重复的菜单代码。
// menu items
menu_home.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(CurrentActivity.this, HomeActivity.class);
startActivity(i);
}
});
menu_help.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(CurrentActivity.this, HelpActivity.class);
startActivity(i);
}
});
menu_media.setOnClickListener(new OnClickListener() {;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(CurrentActivity.this, MediaActivity.class);
startActivity(i);
}
});
menu_index.setOnClickListener(new OnClickListener() {;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(HomeActivity.this, IndexActivity.class);
startActivity(i);
}
});
答案 0 :(得分:1)
是的,你可以..为此需要一个MainActivty并在那里编写你的菜单代码。之后你所有的活动都扩展了MainActivity,如下所示..
class MainActivty extend Activity{
}
class FirstActivity extend MainActivity{
}
class SecondActivity extend MainActivity{
}
然后菜单将出现在您的所有活动中..
答案 1 :(得分:1)
是的,您可以创建一个布局并将其包含在内:
<include
android:id="@+id/headerLayout"
layout="@layout/login_header"
/>
它有自己的类文件,可以保存常用功能。
答案 2 :(得分:1)
我必须在所有活动中重复这些代码。
Java不支持多重继承。
不要仅使用继承来获取代码。如果没有是关系,则使用合成代码重用。如果超类被修改,过度使用实现继承(aka extends
)可能会破坏所有子类。
在你的情况下,我会使用组合。只需创建实现上述Listener逻辑的新类。
答案 3 :(得分:1)
你很容易创建一个类
class MenuActivty extend Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((Button)findViewById(R.id.mymenu_home).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(this, HomeActivity.class);
startActivity(i);
}
});
((Button)findViewById(R.id.mymenu_help).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(this, HelpActivity.class);
startActivity(i);
}
});
//... same thing for the others
}
}
小心重命名所有xml中的菜单“mymenu”
并且您要使用菜单的所有类都应该扩展MenuActivty
并在xml中使用
<include layout="@layout/menulayout "
android:id="@+id/mymenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
并创建一个名为menulayout的xml文件,您可以在其中放置菜单布局
希望我帮助你:)。
答案 4 :(得分:1)
Follow these steps:
1. Create a generic layout for menu and include it wherever you want to use it.
<include
android:id="@+id/headerLayout"
layout="@layout/login_header"
/>
2. Create a class CentralizedHeader. Create on constructor with one parameter of activity type.
3. Create a function here and initialize all views and perform all related functionality here.
public class CentralizedHeader{
private Button btnHome, btnContribute;
private Activity activity;
public CentralizedHeader(Activity activity) {
this.activity = activity;
}
public void headerActions() {
btnHome = (Button) activity.findViewById(R.id.btn_home);
btnContribute = (Button) activity.findViewById(R.id.btn_contribute);
btnHome.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, MorePackagesActivity.class);
activity.startActivity(intent);
}
});
btnContribute.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, ContributeActivity.class);
activity.startActivity(intent);
}
});
}
}
4. Create an object of this class in other activity and call its function. ie
public class MainActivity extends Activity {
private CentralizedHeader headerCentralized;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_home_tab);
headerCentralized = new CentralizedHeader(this);
headerCentralized.headerActions();
}
}
答案 5 :(得分:0)
yes dear you can use it i m talking about function of java code
Step to reuse it...
1. make a Singleton class so that that instance is anywhere you can get
2. mention all your code in this class
3. use all method from this class
and if you use that layout also then just make one xml and include it in all layout where you want to add :)
i think this post is helpful for you dear :)
答案 6 :(得分:0)
只使用一个包含所有菜单的活动,并为活动创建碎片。单击菜单时替换片段。这是实现您想要的功能的好方法。