java Android调用方法而不是类sdk
我的主要应用程序类如下所示,我想知道的是如何将一行更改为从同一个类或另一个类调用方法,而其他的仍然调用活动。代码如下:
public class InfoActivity extends GDListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.info_activity_title);
ItemAdapter adapter = new ItemAdapter(this);
adapter.add(createTextItem(R.string.info_about, AboutActivity.class));
adapter.add(createTextItem(R.string.info_terms, TermsActivity.class));
adapter.add(createTextItem(R.string.info_privacy, PrivacyActivity.class));
setListAdapter(adapter);
}
private TextItem createTextItem(int stringId, Class<?> klass) {
final TextItem textItem = new TextItem(getString(stringId));
textItem.setTag(klass);
return textItem;
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
final TextItem textItem = (TextItem) l.getAdapter().getItem(position);
Intent intent = new Intent(InfoActivity.this, (Class<?>) textItem.getTag());
startActivity(intent);
}
}
所涉行:
adapter.add(createTextItem(R.string.info_about, AboutActivity.class));
我想调用一个方法,作为一个示例,该方法执行以下操作:
Intent emailIntent = new Intent(安卓.content.Intent.ACTION_SEND);
emailIntent.putExtra(安卓.content.Intent.EXTRA_EMAIL, new String[] { AboutActivity.this.getString(R.string.feedback_email) } );
emailIntent.putExtra(安卓.content.Intent.EXTRA_SUBJECT, AboutActivity.this.getString(R.string.feedback_subject));
emailIntent.setType("plain/text");
startActivity(emailIntent);
现在我在AboutActivity的onCreate方法中有这个功能,但是自然没有理由在活动中使用这个功能(发送电子邮件)。相反,它可以按原样运行。那么,我该怎么做呢
谢谢
其他两行:
adapter.add(createTextItem(R.string.info_terms, TermsActivity.class));
adapter.add(createTextItem(R.string.info_privacy, PrivacyActivity.class));
它们在功能上可以保持不变。这个问题是这个问题的补充(我之前问过并得到了回答):
# 1 楼答案
无论您选择如何进行此操作,诀窍都是在单击某个特定项时,将决策移动到
onListItemClick
方法中。这里有一个简单的方法。首先,将createTextItem
方法更改为:然后,将
onListItemClick
更改为:然后,您的
getIntentForString()
方法看起来像这样(注意,我们不能使用switch,因为对使用带有字符串的switch语句的支持最近才添加到java中):注意,这种方法有一个缺点。如果您开始向ListView添加一堆不同的项目,您将需要不断扩展
getIntentForString()
方法。但就目前而言,这应该足够了。如果您发现自己在ListView中添加了更多选项,那么我们需要采用更复杂的方法