所以我基本上跟随this tutorial学习编程的基础知识,并且在响应动作按钮时他们有这个编码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_search:
openSearch();
return true;
case R.id.action_settings:
openSettings();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
但他们根本不谈论案件部分,现在我不明白该怎么做。我认为(?)我需要为opensearch()和opensettings()创建一个方法,但是我在这里放了什么,这个案例部分是什么意思? 谢谢你的帮助!
答案 0 :(得分:0)
switch | case
结构是条件语句。 switch
收到一个可与一个或多个值进行比较的变量。我通常认为它是编写if
语句的优雅方式。
每个case
都是对提供给switch
的变量中存储的值进行的比较。在这种情况下,R.id.action_search
和R.id.action_settings
都是ID(字符串或数字。在这种情况下,我不知道哪个,因为我没有使用过教程)必须与之比较item.getItemId()
。
default
是在以前的case
语句都不符合的情况下将执行的操作。
因此,根据item.getItemId()
的值,可能的操作是执行openSearch()
或openSettings()
(均以return true
结尾)。但是,如果两个条件都不满足,则不会执行任何方法,返回的值将为super.onOptionsItemSelected(item)
因此,如果你在那个教程中找不到这两个方法的代码,那么很可能是一个抽象概念,说明如果满足代码中的条件会发生什么操作。
答案 1 :(得分:0)
它只是Google的一个模板,向您展示如何处理Android中菜单项(操作栏)的点击。 如果我们谈论这个特殊情况,那么在这种情况下,他们正在处理两个菜单项 1的点击。搜索2.设置。
要完成上述任务,他们使用了switch(您也可以使用if和else语句)来验证单击了哪个项目。
switch (item.getItemId()) { // Here they are checking the Id of item been clicked
case R.id.action_search: // Here they are examining if search item is clicked
//openSearch(); // if above case satisfies, then they gonna invoke the openSearch() method.
Toast.makeText(getApplicationContext(), "Pit Bull", Toast.LENGTH_LONG).show();
return true;
case R.id.action_settings: // Here they are examining if action item is clicked
//openSettings(); // if above case satisfies, then they have invoked the openSettings() method.
Toast.makeText(getApplicationContext(), "Eminem", Toast.LENGTH_LONG).show();
return true;
您可以通过替换自己的逻辑在这些情况下做任何您想做的事情 例如:你可以在这里展示像这样的Toast
Toast.makeText(getApplicationContext(), "Pit Bull", Toast.LENGTH_LONG).show();
你想要学习编程很好,但是你必须首先掌握java的基本知识,否则很难理解/学习Android。
祝你好运..
答案 2 :(得分:0)
放置你想要的任何其他代码,这些是示例方法,代替可以将某些东西记录到logcat的方法,如Log.w("Test", "search button clicked");
基本上案例部分包含点击按钮时要执行的操作,就像你可以开始一个新活动,打印一些东西,设置一个日志,你想要点击的任何代码,你可以把它放在那个特定的情况下按钮。