Java 如何在eclipse中创建多个屏幕视图?
我正在使用适用于windows 7的Eclipse,我正在制作一个信息丰富的应用程序,只包含文本和脱机内容。 在我的应用程序中,我有大约180个按钮。每个按钮都将指向另一个屏幕。我需要知道如何使每个按钮指向特定的屏幕? 还有,有没有一种方法可以复制代码,而不必花费数小时将代码复制粘贴180次? 检查以下前两个屏幕的“我的代码”: 这是针对MainActivity.java的: 公共无效addListenerOnButton{Java 如何在eclipse中创建多个屏幕视图?,java,android,eclipse,Java,Android,Eclipse,我正在使用适用于windows 7的Eclipse,我正在制作一个信息丰富的应用程序,只包含文本和脱机内容。 在我的应用程序中,我有大约180个按钮。每个按钮都将指向另一个屏幕。我需要知道如何使每个按钮指向特定的屏幕? 还有,有没有一种方法可以复制代码,而不必花费数小时将代码复制粘贴180次? 检查以下前两个屏幕的“我的代码”: 这是针对MainActivity.java的: 公共无效addListenerOnButton{ final Context context = this;
final Context context = this;
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(context, MainActivity2.class);
startActivity(intent);
}
});
}
我的意思是,代码只针对一个按钮。我应该对每个按钮重复这个吗
还有一个问题,我应该上多少课?180个主要活动,180个片段_main.xml和180个活动_main.xml?这是我的想法,因为您的应用程序只是一个信息型应用程序,您可以创建两个活动: 带按钮的主要活动 信息页 要做到这一点,我需要有关您如何获得这些信息的信息: 在SQLite数据库中。 在字符串数组中 就我个人而言,我更喜欢SQLite DB,它允许您在将来改进它而不会出现问题 关于信息活动: 示例:在布局中,您有一个文本视图,其中将添加此活动应传递的文本 为了使其在您的案例中具有动态性,我们使用传递字符串来显示,在onCreate中,我们添加了如下内容:
Intent intent = getIntents();
String stringToDisplay = null;
if (intent != null)
{
stringToDisplay = intent.getStringExtra (EXTRA_STRING_CONTENT);
}
getIntents将获取我们的主要活动创建并传递给它的Intent对象。getStringExtra是一个简单的方法,它对Android说:我想获取与键EXTRA_string_内容一起保存的字符串,它有点像地图
EXTRA_STRING_CONTENT是一个字段,用于确保在传递数据时不会出错,因为在MainActivity中传递数据和在InformationActivity中读取数据时需要使用相同的名称
public static final String EXTRA_STRING_CONTENT = "EXTRA_STRING_CONTENT";
好了,我们结束了
我们现在只需要将字符串设置为TextView:
TextView infoTextView = (TextView) findViewById(R.id.infotextview);
infoTextView.setText (stringToDisplay);
住手
现在我们应该转到MainActivity代码并修改addListenerOnButton
好的,我将重点关注这两条线
Intent intent = new Intent(context, MainActivity2.class);
startActivity(intent);
我们需要传递字符串以在这里显示,如何传递
在我们现在使用getStringExtra之前,类似的注意事项是:它是相同的Intent类,但现在我们需要putExtra方法,编译器将为我们选择正确的重载,所以我们只需要这样做
String stringToDisplay = "Hello world";
intent.putExtra(InformativeActivity.EXTRA_STRING_CONTENT, stringToDisplay);
注:InformativeActivity.EXTRA\u STRING\u内容
使用当前代码,我们将始终向第二个活动发送Hello world,但我们需要基于按钮的动态功能…现在这取决于您如何获取数据
如果是字符串数组,您可以将字符串数组保存在数组中,然后根据按钮确定它是否是第一个发送的字符串索引0,等等
例如:
int buttonId = 1; // it will be a general variable, if it's button 1 it will be 0, if 2-1 etc.
String[] informations = getResources().getStringArray(R.array.infos); // in a real code you should move it outside the `onClick` code and put it in a static final field.
intent.putExtra(InformativeActivity.EXTRA_STRING_CONTENT, informations[buttonId]); // it's the same of above
如果您理解了这个概念,您将知道如何根据您的需要调整代码
在某些情况下,您需要更多信息,或者希望发送的信息如果由第二个活动管理会更好示例:在sqlite数据库中,您可以仅发送行的id,并根据此id读取第二个活动中的行
一些你可以改变的事情:
避免称之为MainActivity2,它没有名字那么有用
您实际上不需要保存上下文,您可以使用MainActivity.this
尝试使addListenerOnButton更通用,例如,将一个按钮作为参数,并将侦听器设置为它。不要从XML中读取它,每个按钮将有180个方法。
我建议你重新考虑180项活动的设计???@Raghunandan你说的重新考虑180项活动是什么意思?所以我应该基本上改变我的所有应用程序!不,我不会!请解释更多@Raghunandan为什么你不从1开始,看看goesI认为@Raghunandan是如何要求你评估你是否真的需要180项活动的。你真的吗您是否拥有180个独特的布局,或者每个活动是否包含相同类型的内容?如果它们包含相同类型的内容,那么您真正需要的可能是可以更改显示内容的单个活动。
int buttonId = 1; // it will be a general variable, if it's button 1 it will be 0, if 2-1 etc.
String[] informations = getResources().getStringArray(R.array.infos); // in a real code you should move it outside the `onClick` code and put it in a static final field.
intent.putExtra(InformativeActivity.EXTRA_STRING_CONTENT, informations[buttonId]); // it's the same of above