2 sinat 34680565 sinat_34680565 于 2016.04.27 23:48 提问

Android开发入门学习中遇到的问题 20C

Android初学者,使用的书籍是《第一行代码Android》在书中2.2.5在活动中使用Toast这个部分出现了问题代码编写并未报错,虚拟机中按menu键没有出现菜单栏,请问这是什么原因该如何解决。拜托各位了。图片说明

图片说明问题没有解决,在虚拟机中点击Menu依旧没有出现菜单栏,请问还有哪些问题?拜托了

9个回答

devmiao
devmiao   Ds   Rxr 2016.04.27 23:51

在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决。现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下。

1.R.java不能实时更新

  问题描述:在res文件中新增的变量不能在R.java中实时的显示出来。

  解决方法:选择菜单栏的“Project”,勾选“Build Automatically”选项。

2.LogCat视窗没有显示

  问题描述:在Eclipse的右下方没有显示LogCat视窗。

  解决方法:选择菜单栏的“Windows”,再选择“Show View”,最后再选择“LogCat”即可。

3.编译时提示“android library projects cannot be launched”错误的解决方法

  问题描述:编译时提示“android library projects cannot be launched”错误

  解决方法:选择菜单栏的“Project”,再选择“Properties”,在弹出的窗口中选择“Android”,将is library选项前面的勾去掉。

4.在xml中添加EditText控件后提示“This text field does not specify an inputType or a hint”错误

  问题描述:在xml中添加EditText控件,控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

  编译时,提示“This text field does not specify an inputType or a hint”错误。

  原因分析:控件中缺少android:hint以及android:inputType信息。android:hint用于设置EditText为空时显示的默认文字提示信息。android:inputType用于设置EditText的文本的类型,用于帮助输入法显示合适的键盘类型。

  解决方法:在控件中添加android:hint以及android:inputType信息,添加后的控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:hint="0"
     android:inputType="number"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

5.警告信息“Hardcoded string "xxx", should use @string resource”的消除方法

  问题描述:在xml中添加Button控件,控件信息如下。

 <Button
     android:id="@+id/mButton_mc"
     android:text="mc"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" >           
 </Button>

  编译时,提示“Hardcoded string "mc", should use @string resource”警告。

  原因分析:在android:text中使用到了字符串mc,应该将该字符串定义在String.xml中,然后再通过调用String.xml中该字符串的资源名来使用该字符串资源。这样做的好处在于可以做到一改全改,并且在支持多语言时也是很有用处的。

  解决方法:在项目目录下的res-->values-->String.xml中添加字符串mc的信息如下。

  
  mc

  

  然后,再在使用该Button控件的xml中,通过调用该字符串的资源名来使用该字符串,如下。

  <Button
      android:id="@+id/mButton_mc"
      android:text="@string/mc"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >           
  </Button>

6.警告信息“Nested weights are bad for performance”的消除方法

  原因分析:在布局进行嵌套使用时,父布局与子布局都使用了android:layout_weight,但不是必须使用时,便会出现如题所示的警告信息。

  解决方法:根据实际情况,去除子布局中非必须使用的android:layout_weight。

7.启动模拟器时出现错误信息“Please ensure that adb is correctly located at:XXXXX”的解决方法

  现象:使用正确的源代码,在启动模拟器时出现如下错误信息“Please ensure that adb is correctly located at 'D:\AndroidSDK4.0\android-sdk-windows\platform-tools\adb.exe' and can be executed.”

  解决方法:将D:\AndroidSDK4.0\android-sdk-windows\platform-tools加入到系统环境变量PATH中。

8.模拟器启动时一直显示信息“Waiting for HOME ('android.process.acore') to be launched...”的解决方法

  现象:模拟器启动时,等很久(5分钟以上)也启动不了,一直提示“Waiting for HOME ('android.process.acore') to be launched...”信息。

   解决方法:删除当前的模拟器,重新创建一个模拟器。在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决。现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下。

1.R.java不能实时更新

  问题描述:在res文件中新增的变量不能在R.java中实时的显示出来。

  解决方法:选择菜单栏的“Project”,勾选“Build Automatically”选项。

2.LogCat视窗没有显示

  问题描述:在Eclipse的右下方没有显示LogCat视窗。

  解决方法:选择菜单栏的“Windows”,再选择“Show View”,最后再选择“LogCat”即可。

3.编译时提示“android library projects cannot be launched”错误的解决方法

  问题描述:编译时提示“android library projects cannot be launched”错误

  解决方法:选择菜单栏的“Project”,再选择“Properties”,在弹出的窗口中选择“Android”,将is library选项前面的勾去掉。

4.在xml中添加EditText控件后提示“This text field does not specify an inputType or a hint”错误

  问题描述:在xml中添加EditText控件,控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

  编译时,提示“This text field does not specify an inputType or a hint”错误。

  原因分析:控件中缺少android:hint以及android:inputType信息。android:hint用于设置EditText为空时显示的默认文字提示信息。android:inputType用于设置EditText的文本的类型,用于帮助输入法显示合适的键盘类型。

  解决方法:在控件中添加android:hint以及android:inputType信息,添加后的控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:hint="0"
     android:inputType="number"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

5.警告信息“Hardcoded string "xxx", should use @string resource”的消除方法

  问题描述:在xml中添加Button控件,控件信息如下。

 <Button
     android:id="@+id/mButton_mc"
     android:text="mc"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" >           
 </Button>

  编译时,提示“Hardcoded string "mc", should use @string resource”警告。

  原因分析:在android:text中使用到了字符串mc,应该将该字符串定义在String.xml中,然后再通过调用String.xml中该字符串的资源名来使用该字符串资源。这样做的好处在于可以做到一改全改,并且在支持多语言时也是很有用处的。

  解决方法:在项目目录下的res-->values-->String.xml中添加字符串mc的信息如下。

  
  mc

  

  然后,再在使用该Button控件的xml中,通过调用该字符串的资源名来使用该字符串,如下。

  <Button
      android:id="@+id/mButton_mc"
      android:text="@string/mc"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >           
  </Button>

6.警告信息“Nested weights are bad for performance”的消除方法

  原因分析:在布局进行嵌套使用时,父布局与子布局都使用了android:layout_weight,但不是必须使用时,便会出现如题所示的警告信息。

  解决方法:根据实际情况,去除子布局中非必须使用的android:layout_weight。

7.启动模拟器时出现错误信息“Please ensure that adb is correctly located at:XXXXX”的解决方法

  现象:使用正确的源代码,在启动模拟器时出现如下错误信息“Please ensure that adb is correctly located at 'D:\AndroidSDK4.0\android-sdk-windows\platform-tools\adb.exe' and can be executed.”

  解决方法:将D:\AndroidSDK4.0\android-sdk-windows\platform-tools加入到系统环境变量PATH中。

8.模拟器启动时一直显示信息“Waiting for HOME ('android.process.acore') to be launched...”的解决方法

  现象:模拟器启动时,等很久(5分钟以上)也启动不了,一直提示“Waiting for HOME ('android.process.acore') to be launched...”信息。

   解决方法:删除当前的模拟器,重新创建一个模拟器。在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决。现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下。

1.R.java不能实时更新

  问题描述:在res文件中新增的变量不能在R.java中实时的显示出来。

  解决方法:选择菜单栏的“Project”,勾选“Build Automatically”选项。

2.LogCat视窗没有显示

  问题描述:在Eclipse的右下方没有显示LogCat视窗。

  解决方法:选择菜单栏的“Windows”,再选择“Show View”,最后再选择“LogCat”即可。

3.编译时提示“android library projects cannot be launched”错误的解决方法

  问题描述:编译时提示“android library projects cannot be launched”错误

  解决方法:选择菜单栏的“Project”,再选择“Properties”,在弹出的窗口中选择“Android”,将is library选项前面的勾去掉。

4.在xml中添加EditText控件后提示“This text field does not specify an inputType or a hint”错误

  问题描述:在xml中添加EditText控件,控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

  编译时,提示“This text field does not specify an inputType or a hint”错误。

  原因分析:控件中缺少android:hint以及android:inputType信息。android:hint用于设置EditText为空时显示的默认文字提示信息。android:inputType用于设置EditText的文本的类型,用于帮助输入法显示合适的键盘类型。

  解决方法:在控件中添加android:hint以及android:inputType信息,添加后的控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:hint="0"
     android:inputType="number"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

5.警告信息“Hardcoded string "xxx", should use @string resource”的消除方法

  问题描述:在xml中添加Button控件,控件信息如下。

 <Button
     android:id="@+id/mButton_mc"
     android:text="mc"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" >           
 </Button>

  编译时,提示“Hardcoded string "mc", should use @string resource”警告。

  原因分析:在android:text中使用到了字符串mc,应该将该字符串定义在String.xml中,然后再通过调用String.xml中该字符串的资源名来使用该字符串资源。这样做的好处在于可以做到一改全改,并且在支持多语言时也是很有用处的。

  解决方法:在项目目录下的res-->values-->String.xml中添加字符串mc的信息如下。

  
  mc

  

  然后,再在使用该Button控件的xml中,通过调用该字符串的资源名来使用该字符串,如下。

  <Button
      android:id="@+id/mButton_mc"
      android:text="@string/mc"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >           
  </Button>

6.警告信息“Nested weights are bad for performance”的消除方法

  原因分析:在布局进行嵌套使用时,父布局与子布局都使用了android:layout_weight,但不是必须使用时,便会出现如题所示的警告信息。

  解决方法:根据实际情况,去除子布局中非必须使用的android:layout_weight。

7.启动模拟器时出现错误信息“Please ensure that adb is correctly located at:XXXXX”的解决方法

  现象:使用正确的源代码,在启动模拟器时出现如下错误信息“Please ensure that adb is correctly located at 'D:\AndroidSDK4.0\android-sdk-windows\platform-tools\adb.exe' and can be executed.”

  解决方法:将D:\AndroidSDK4.0\android-sdk-windows\platform-tools加入到系统环境变量PATH中。

8.模拟器启动时一直显示信息“Waiting for HOME ('android.process.acore') to be launched...”的解决方法

  现象:模拟器启动时,等很久(5分钟以上)也启动不了,一直提示“Waiting for HOME ('android.process.acore') to be launched...”信息。

   解决方法:删除当前的模拟器,重新创建一个模拟器。

devmiao
devmiao   Ds   Rxr 2016.04.27 23:52

在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决。现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下。

1.R.java不能实时更新

  问题描述:在res文件中新增的变量不能在R.java中实时的显示出来。

  解决方法:选择菜单栏的“Project”,勾选“Build Automatically”选项。

2.LogCat视窗没有显示

  问题描述:在Eclipse的右下方没有显示LogCat视窗。

  解决方法:选择菜单栏的“Windows”,再选择“Show View”,最后再选择“LogCat”即可。

3.编译时提示“android library projects cannot be launched”错误的解决方法

  问题描述:编译时提示“android library projects cannot be launched”错误

  解决方法:选择菜单栏的“Project”,再选择“Properties”,在弹出的窗口中选择“Android”,将is library选项前面的勾去掉。

4.在xml中添加EditText控件后提示“This text field does not specify an inputType or a hint”错误

  问题描述:在xml中添加EditText控件,控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

  编译时,提示“This text field does not specify an inputType or a hint”错误。

  原因分析:控件中缺少android:hint以及android:inputType信息。android:hint用于设置EditText为空时显示的默认文字提示信息。android:inputType用于设置EditText的文本的类型,用于帮助输入法显示合适的键盘类型。

  解决方法:在控件中添加android:hint以及android:inputType信息,添加后的控件信息如下。

 <EditText
     android:id="@+id/editText"
     android:hint="0"
     android:inputType="number"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" ></EditText>

5.警告信息“Hardcoded string "xxx", should use @string resource”的消除方法

  问题描述:在xml中添加Button控件,控件信息如下。

 <Button
     android:id="@+id/mButton_mc"
     android:text="mc"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" >           
 </Button>

  编译时,提示“Hardcoded string "mc", should use @string resource”警告。

  原因分析:在android:text中使用到了字符串mc,应该将该字符串定义在String.xml中,然后再通过调用String.xml中该字符串的资源名来使用该字符串资源。这样做的好处在于可以做到一改全改,并且在支持多语言时也是很有用处的。

  解决方法:在项目目录下的res-->values-->String.xml中添加字符串mc的信息如下。

  
  mc

  

  然后,再在使用该Button控件的xml中,通过调用该字符串的资源名来使用该字符串,如下。

  <Button
      android:id="@+id/mButton_mc"
      android:text="@string/mc"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >           
  </Button>

6.警告信息“Nested weights are bad for performance”的消除方法

  原因分析:在布局进行嵌套使用时,父布局与子布局都使用了android:layout_weight,但不是必须使用时,便会出现如题所示的警告信息。

  解决方法:根据实际情况,去除子布局中非必须使用的android:layout_weight。

7.启动模拟器时出现错误信息“Please ensure that adb is correctly located at:XXXXX”的解决方法

  现象:使用正确的源代码,在启动模拟器时出现如下错误信息“Please ensure that adb is correctly located at 'D:\AndroidSDK4.0\android-sdk-windows\platform-tools\adb.exe' and can be executed.”

  解决方法:将D:\AndroidSDK4.0\android-sdk-windows\platform-tools加入到系统环境变量PATH中。

8.模拟器启动时一直显示信息“Waiting for HOME ('android.process.acore') to be launched...”的解决方法

  现象:模拟器启动时,等很久(5分钟以上)也启动不了,一直提示“Waiting for HOME ('android.process.acore') to be launched...”信息。

   解决方法:删除当前的模拟器,重新创建一个模拟器。

qq_21413973
qq_21413973   2016.04.28 02:45

你没有覆盖那两个方法,上面还有一个over

sinat_34680565
sinat_34680565 嗯嗯,我是参考的书籍是《第一行代码Android》书上的代码与您写的不一样啊,为什么按照书上却起不了作用,问题出在哪里呢?拜托您了
一年多之前 回复
sinat_34680565
sinat_34680565 按照您说的操作了以后还是没有效果请问怎么办?麻烦您了
一年多之前 回复
qq_21413973
qq_21413973 @Override public boolean onOptionsItemSelected(MenuItem item) {     // Handle item selection     switch (item.getItemId()) {         case R.id.new_game:             newGame();             return true;         case R.id.help:             showHelp();             return true;         default:             return super.onOptionsItemSelected(item);     } }
一年多之前 回复
crazy1235
crazy1235   Ds   Rxr 2016.04.28 09:49
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return super.onCreateOptionsMenu(menu);
    }

你这个方法写错了。应该是有参数的。

sinat_34680565
sinat_34680565 恩,谢谢您可我加上参数和@Override以后再虚拟机上面还是没效果,怎么办啊,好着急,已经被这个问题卡住两周了。
一年多之前 回复
u013147734
u013147734   2016.04.28 11:11

上面两位bingo,而你自创的onCreateOptionsMenu方法是不会被调用的

sinat_34680565
sinat_34680565 已经按照楼上两位的写了,可是虚拟机还是没有出现菜单栏?请问怎么办?拜托您了
一年多之前 回复
donggua3694857
donggua3694857   Rxr 2016.04.28 12:40

你要加上这个@Override,不然你自己写的这个方法是不会被调用的

donggua3694857
donggua3694857 回复安爬: @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate( R.menu.options_menu , menu); return true; }
一年多之前 回复
donggua3694857
donggua3694857 回复安爬:看错,有布局了。menu要add东西才会显示的吧
一年多之前 回复
donggua3694857
donggua3694857 回复安爬: 你菜单没有设置布局吧,此外,menu要ad
一年多之前 回复
sinat_34680565
sinat_34680565 加了@Override还是没有效果请问怎么办?麻烦您了?
一年多之前 回复
dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.04.30 15:29

请问你用的手机是什么型号的?小米的MENU被重写了

u013147734
u013147734   2016.05.06 17:00

加什么@Override。根本不是这种问题,@Override只是起个提示作用,如果方法名字参数正确根本不需要@Override。
名字怕写错,最好是这样,打onCre,然后alt+/弹出提示,从里面选择重写的方法.
重写了方法的话,你再把自动生成的@Override去掉也可以.

你去看看main.xml文件中有几个item,是不是R.menu.main对应的文件里面没实际选项。
再不行试下带菜单键的真机,再定位问题方向。别的手机有那就是虚拟机的问题
自己多写几个item项,有actionBar的activity会在actionBar最右侧显示一个菜单按钮,替代那些没有菜单键的手机

super.onCreateOptionsMenu(menu)是不是要放在 inflate之后,也许是这个原因。
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
试下,我怀疑是没掉super把menu放进activty里面去

如果还是没结果,就再尝试别的办法吧

wenxiaoxin19861101
wenxiaoxin19861101   2016.05.13 10:21

他们说的都不对,这里给你一个管用的,你不显示的原因是你没有执行menu.add方法把你的项目加上去。
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);

    Intent wallpaper = new Intent();
    wallpaper.setComponent(new ComponentName("com.android.systemui",
        "com.android.systemui.statusbar.phone.ChangePicActivity"));
    wallpaper.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

    Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);
    settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

    // add()方法的四个参数,依次是:
    // 1、组别,如果不分组的话就写Menu.NONE,
    // 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
    // 3、顺序,哪个菜单项在前面由这个参数的大小决定
    // 4、文本,菜单项的显示文本
    menu.add(Menu.NONE, Menu.FIRST, 0, R.string.menu_wallpaper).setIntent(wallpaper);
    menu.add(Menu.NONE, Menu.FIRST + 1, 0, R.string.menu_settings).setIntent(settings);

    return true;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!