问题描述
- Android开发入门学习中遇到的问题
-
Android初学者,使用的书籍是《第一行代码Android》在书中2.2.5在活动中使用Toast这个部分出现了问题代码编写并未报错,虚拟机中按menu键没有出现菜单栏,请问这是什么原因该如何解决。拜托各位了。
解决方案
在学习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.0android-sdk-windowsplatform-toolsadb.exe' and can be executed.”
解决方法:将D:AndroidSDK4.0android-sdk-windowsplatform-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.0android-sdk-windowsplatform-toolsadb.exe' and can be executed.”
解决方法:将D:AndroidSDK4.0android-sdk-windowsplatform-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.0android-sdk-windowsplatform-toolsadb.exe' and can be executed.”
解决方法:将D:AndroidSDK4.0android-sdk-windowsplatform-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.0android-sdk-windowsplatform-toolsadb.exe' and can be executed.”
解决方法:将D:AndroidSDK4.0android-sdk-windowsplatform-tools加入到系统环境变量PATH中。
8.模拟器启动时一直显示信息“Waiting for HOME ('android.process.acore') to be launched...”的解决方法
现象:模拟器启动时,等很久(5分钟以上)也启动不了,一直提示“Waiting for HOME ('android.process.acore') to be launched...”信息。
解决方法:删除当前的模拟器,重新创建一个模拟器。
解决方案三:
你没有覆盖那两个方法,上面还有一个over
解决方案四:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
你这个方法写错了。应该是有参数的。
解决方案五:
上面两位bingo,而你自创的onCreateOptionsMenu方法是不会被调用的
解决方案六:
你要加上这个@Override,不然你自己写的这个方法是不会被调用的
解决方案七:
请问你用的手机是什么型号的?小米的MENU被重写了
解决方案八:
加什么@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里面去
如果还是没结果,就再尝试别的办法吧
解决方案九:
他们说的都不对,这里给你一个管用的,你不显示的原因是你没有执行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;
}