在XML文件中,我们可以为视图分配ID android:id="@+id/something",然后调用findViewById(),但在以编程方式创建视图时,如何分配ID?
我认为setId()与默认分配不同.setId()是额外的.
任何人都可以纠正我吗?
android android-view findviewbyid android-resources android-identifiers
在我的布局xml文件中,我已经包含了其他布局xml文件(每个文件都有不同的android id).
<include layout="@layout/view_contact_name" android:id="+id/test1"/>
<include layout="@layout/view_contact_name" android:id="+id/test2"/>
Run Code Online (Sandbox Code Playgroud)
但是,当我在模拟器中运行它,并开始层次查看器,每个布局仍显示"NO_ID",并在我的代码,我
findViewById(R.id.test1)和findViewById(R.id.test2)两个返回null.
有人可以帮我解决我的问题吗?
我正在创建一个EditText对象,然后我尝试在单元测试中引用它.什么是添加一个新的最佳方式id来R.id为这个动态创建的对象,这样我可以通过以后引用它findViewById()的单元测试?
我讨厌发布代码,并问为什么它不起作用,但我现在不知所措.我试过在下面运行下面的类,我在logcat中得到一个异常,我无法解释.即使谷歌搜索产生的结果也很少.也许我只是不了解生态系统,但例外的信息很少.我得到的例外情况如下:
03-06 21:50:43.031: E/AndroidRuntime(1013): FATAL EXCEPTION: main
03-06 21:50:43.031: E/AndroidRuntime(1013): android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.content.res.Resources.getResourceName(Resources.java:1659)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.view.ViewPager.populate(ViewPager.java:1012)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.view.ViewPager.populate(ViewPager.java:881)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1366)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.view.View.measure(View.java:15513)
03-06 21:50:43.031: E/AndroidRuntime(1013): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827)
03-06 21:50:43.031: E/AndroidRuntime(1013): …Run Code Online (Sandbox Code Playgroud) 我已经实现了从右侧滑动的drawerlayout,但它并没有像facebook那样改变活动(见下图).当用户点击上面的图像中的opendrawer按钮时,如何将当前活动推到右侧.目前它出现在活动之上并且掉落阴影.我非常感谢任何帮助.提前致谢.
我正在我的应用程序中创建一堆程序化View的.因为看起来它们默认都是一样的id=-1.为了使用它们,我需要生成唯一的id.
我已经尝试了几种方法 - 随机数生成和基于当前时间,但无论如何没有100%保证不同的视图将具有不同的ID
只是想知道是否有更可靠的方法来生成独特的方法?可能有特殊的方法/类?
我有一个HorizontalScrollView(水平)LinearLayout我用作添加多个片段的容器.在进行一些更改后,我需要从该容器中删除所有片段并添加新的片段.但是,当我删除旧片段时,排序似乎存在问题.
以下是场景:
A1,B1,C1,D1以该顺序A2,B2,C2(作为单个事务),它会显示A1,B1,C1,D1,A2,B2,C2A2,B2,C2,它会显示C2,B2,A2现在我找到了一个解决方法,我先添加新的片段,然后删除旧的片段(仍然是同一个事务的一部分)并且正常工作.
编辑: 解决方法不能一直工作.
我正在使用android.support.v4.app.Fragment.
关于发生了什么的任何想法?
我有一个通过XML资源定义的菜单.现在动态我添加一个菜单项
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
if(myCondition==true)
{
menu.add(0, 99, 0, "new Entry");
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
在onOptionsItemSelected(MenuItem item)中,我有一个case语句,它检查"99"并执行我的操作.从技术上讲,这很好,我只是想知道这是什么数字,这里99,我会选择?在XML中创建的项目通过资源文件获得了一个ID,我认为Android有一些逻辑来创建这些项目.我想知道生成的菜单项是否会偶然发生99,然后它将不再起作用.什么是最好的方式?
我的应用程序在从背景到前景时经常崩溃.Scenerio:假设我玩任何游戏,我的应用程序在最近的列表中,在播放后,如果我选择应用程序,它将崩溃并显示错误.我的应用中没有工具栏,只使用了操作栏.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fcords.android/com.fcords.android.Home.HomeScreen.HomePage_New}: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.support.v7.widget.Toolbar$SavedState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.support.v7.widget.Toolbar$SavedState
at android.support.v7.widget.Toolbar.onRestoreInstanceState(Toolbar.java:1048)
at android.view.View.dispatchRestoreInstanceState(View.java:13639)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2889)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2895)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2895)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2895)
at android.view.View.restoreHierarchyState(View.java:13617)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1982)
at android.app.Activity.onRestoreInstanceState(Activity.java:1032)
at android.app.Activity.performRestoreInstanceState(Activity.java:987)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1184)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2287)
Run Code Online (Sandbox Code Playgroud)
任何人都面临这个问题?提前谢谢.
我有多个字符串,这是动态来的,我想将这些字符串设置为我的表单中的EditText字段的Id.我怎么能这样做,你能帮我吗?
对于Ex:如果我有id"title",我想将此标题设置为EditText字段的id,这样当我想访问该字段的值时,我可以像findviewById(title)一样访问它.
请帮帮我......
非常感谢你提前.