我在Android Enthusiasts上发布了这个问题,但认为这是一个错误的地方,所以我从那里删除了它,并在这里"再次"询问它.
这是一个noob问题,请原谅我,但我只想清楚地理解基本概念.阅读repo帮助和Google的repo命令参考页面并没有太多启发.我从谷歌的参考页面了解了一些内容,但我仍需要更多的澄清.
按照如何下载android源码的说明,我在Ubuntu shell上执行了这两个命令:(我已经关注了环境的所有先决条件.)
~/android4.2.2$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2
~/android4.2.2$ repo sync -j4
Run Code Online (Sandbox Code Playgroud)
在等待半天的回购完成下载之后,我最终在android4.2.2目录中下载了19G的下载资料.那究竟发生了什么,以及为什么当谷歌说我只应该期待大约8G的源文件时它达到19G?
我已经在xml布局文件中为EditText小部件设置了maxLength属性,它确实限制了字符的显示.
但它仍然允许用户按下键盘上的更多字母,并且退格会删除这些额外的按下而不是显示屏上的最后一个字母.
我相信这不是它应该如何.达到限制后按键应该停止接受更多输入,即使它没有显示.
有什么问题吗?
更新
根据以下答案,对于多行EditText,还要添加textMultiLine属性.
android:inputType="textFilter|textMultiLine"
Run Code Online (Sandbox Code Playgroud) 在我的values.xml中,我有一些字符串资源.但有时,出于特定原因,我希望该字符串资源具有空值.
如何指定该字符串具有null值?
values.xml:
<string name="default_item_0">Some String</string>
<string name="default_item_1">@null</string>
Run Code Online (Sandbox Code Playgroud)
Java代码:
String item0 = context.getString(R.string.default_item_0);
String item1 = context.getString(R.string.default_item_1);
Run Code Online (Sandbox Code Playgroud)
预期:
String item0 = "Some String";
String item1 = null;
Run Code Online (Sandbox Code Playgroud)
实际:
String item0 = "Some String";
String item1 = "@0";
Run Code Online (Sandbox Code Playgroud)
我尝试了@null值,但它返回了一个字符串@0.
是否有可能null在xml中有一个值?
我不确定我的问题的措词是否正确,但是显示图像来解释我的问题会更容易。
在XML编辑器中,某些值将替换为该条目定义的实际值。但是,我不希望Android Studio向我显示实际值。相反,我仍然希望它显示参考名称。那么,如何禁用编辑器以这种方式预览?
在下图中的,android:text="@string/sign_up"但编辑器将其显示为android:text="Sign up...",以及其他属性,并且仅当我将鼠标悬停在属性上时,引用名称才会显示。
如何通过Android Studio设置/配置永久禁用此功能?
更新:.java文件中发生了相同的事情。枚举或R.string常量被其实际值替换。
当操作栏有标签时,我注意到当活动在屏幕上加载时会调用onTabSelected.每当发生方向改变时也会调用它.我的代码根据所选的选项卡查询数据库,并将查询结果显示给加载的布局.
我的问题是在恢复状态下保存选项卡状态,当前选择的选项卡为1或更高,因为默认情况下在0选项卡上调用onTabSelected,当恢复状态选项卡为1或更高时,将再次调用它.这使得选项卡0上的数据库查询无效.
如何配置android在创建选项卡时不调用onTabSelected或至少检测到此调用是默认的而不是用户触发的?
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
int tabPos = tab.getPosition();
switch(tabPos) {
case 0:
// query database and display result
break;
case 1:
// a different query and display result
break;
case 2: ...
}
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
if(savedInstanceState.containsKey(STATE_SELECTED_TAB)) {
getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_TAB));
}
super.onRestoreInstanceState(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(STATE_SELECTED_TAB, getActionBar().getSelectedNavigationIndex());
super.onSaveInstanceState(outState);
}
Run Code Online (Sandbox Code Playgroud)
添加了复杂功能:
当前选中的选项卡为0且方向发生变化时,onTabSelected仍会被调用两次!一旦最初创建选项卡,第二次onRestoreState恢复保存的选项卡选择状态,即使它是0.
我最初的假设是onTabSelected被调用两次,但我错了.这是我的片段onCreateView被调用两次,片段事务中的一些错误在方向更改时添加了两次相同的片段.onTabSelected被调用一次,当恢复的选项卡也为0时,也会调用onTabReselected的恢复状态调用.
在搜索SO和谷歌之后,我发现这个问题有类似的问题原因. 创建ActionBar选项卡也调用其selectTab函数