Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序中的活动太多。还有别的选择吗?_Android - Fatal编程技术网

Android应用程序中的活动太多。还有别的选择吗?

Android应用程序中的活动太多。还有别的选择吗?,android,Android,我正在创建我的第一个应用程序。在这个应用程序中,我有一个包含许多项目的可扩展列表。当我选择这些项目时,我希望显示几个段落。如果我只想显示文本,是否需要为每个项目创建活动?我知道必须有一个更简单的方法。起初我确实是这样创建的,它看起来非常庞大(30多个活动),所以现在我对它进行了设置,以便在选择一个项目时,setContentView会打开相应的布局,其中包含需要显示的文本。这是可行的,但有一个陷阱,每当我点击后退按钮,它就会把我带回我的主要活动类,而不是我的可扩展列表类。我希望用户能够返回并从列

我正在创建我的第一个应用程序。在这个应用程序中,我有一个包含许多项目的可扩展列表。当我选择这些项目时,我希望显示几个段落。如果我只想显示文本,是否需要为每个项目创建活动?我知道必须有一个更简单的方法。起初我确实是这样创建的,它看起来非常庞大(30多个活动),所以现在我对它进行了设置,以便在选择一个项目时,setContentView会打开相应的布局,其中包含需要显示的文本。这是可行的,但有一个陷阱,每当我点击后退按钮,它就会把我带回我的主要活动类,而不是我的可扩展列表类。我希望用户能够返回并从列表中选择其他内容。任何关于我需要做什么的指导都将不胜感激

我建议为每个要显示的项目创建字符串资源,然后使用TextView创建一个活动。然后,不要为每个活动创建新的意图,而是创建一个指向新活动的意图,并添加一个包含TextView文本的额外意图。例如:

活动1:

myButton.setOnClickListener(new OnClickListener(){
    public void onClick(View v) {
        Intent intent = new Intent(this, ParagraphView.class);
        intent.putExtra("textData", getResources().getString(R.string.myText));
        getBaseContext().startActivity(intent);
    }
});
在查看器的onCreate中,添加以下内容以获取TextView:

Intent intent = getIntent();
String textData = intent.getStringExtra("text");
TextView tv = (TextView) findViewById(R.id.myTextView);
tv.setText(textData);
现在,我们需要将文本写入TextView:

Intent intent = getIntent();
String textData = intent.getStringExtra("text");
TextView tv = (TextView) findViewById(R.id.myTextView);
tv.setText(textData);
您所需要做的就是设置字符串资源和按钮单击侦听器。您可能会认为这比有很多活动更容易(这样管理条目当然容易),但确实需要一些设置。 编辑:感谢@ianhanniballake指出了一个更好的方法(我甚至不知道当时我在想什么…)


Edit2:哇,我真的把代码搞乱了。(希望)现在已修复

此代码实际上不起作用,你知道吗?您至少需要使用将字符串转换为适当的资源ID。为什么不直接传入R.string.paragraphId(或者如果需要,甚至是getString(R.string.paragraphId))@ianhanniballake关于通过intent传递资源的观点很好。(我想我今晚有点太累了,不能正常思考…)将更新。谢谢你花时间回答我的问题并为我指出正确的方向。我来试试这个。