Articles of findviewbyid

findViewById在自定义视图中查找子视图

我定义了一个视图,它扩展了RelativeLayout ,我想提取其id在layout xml文件中指定的子项。 在HeaderView.java : 1 package com.example.test; 2 3 public class HeaderView extends RelativeLayout { 4 5 public HeaderView(Context context, AttributeSet attrs) { 6 this(context, attrs, 0); 7 8 TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.HeaderView, 0, 0); 9 10 int headerId = 0; 11 int containerId = 0; 12 13 // find attributes 14 if […]

Android片段 – findViewById返回null

我有一个在互联网上似乎很常见的问题:我创build了一个只有一个片段的活动。 这是生成的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_customer); if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); ListView lv = (ListView) findViewById(android.R.id.list); } } 在条件之后或之内,我无法使用findViewById获取任何对象:它始终为空。 以下是生成的代码的其余部分: public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_customer, container, false); […]

findViewById的效率

也许大多数Android开发者知道findViewById不是一个便宜的操作。 我们大多数人知道的另一件事是,您可以通过使用视图层次结构的最小子树来通过其id来查找视图,例如: <LinearLayout android:id="@+id/some_id_0"> <LinearLayout android:id="@+id/some_id_1"> <LinearLayout android:id="@+id/some_id_2"> <TextView android:id="@+id/textview" /> </LinearLayout> </LinearLayout> </LinearLayout> 在这种情况下,您可能需要使用id == @id/textview在LinearLayout进行search 但是,层次结构不是层叠的,而是在各个层面上分支,你想在“叶子”上find意见呢? 你执行findViewById来find父母的分支底部,或者你执行一个更大的子集的findViewById ? 我认为一个简单的答案就是取决于案例,但也许我们可以概括一下它真正依赖于什么? 谢谢 编辑: 对于更大的子集,我的意思是这样的: <RelativeLayout android:id="@+id/r0"> <RelativeLayout android:id="@+id/r1"> <LinearLayout android:id="@+id/some_id_0"> <LinearLayout android:id="@+id/some_id_1"> <LinearLayout android:id="@+id/some_id_2"> <TextView android:id="@+id/textview0" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/some_id_3"> <LinearLayout android:id="@+id/some_id_4"> <LinearLayout android:id="@+id/some_id_5"> <TextView android:id="@+id/textview1" /> </LinearLayout> </LinearLayout> </LinearLayout> </RelativeLayout> <LinearLayout android:id="@+id/some_id_6"> […]

findViewById加重错误的元素?

我不明白为什么findViewById返回错误的元素,这里是类: public class EventDetailsFragment extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.event_details); Log.d("First", findViewById(R.id.tuxtView1).getClass().toString()); Log.d("Second", findViewById(R.id.tuxtView2).getClass().toString()); Log.d("Third", findViewById(R.id.imageView1).getClass().toString()); } } 这里是xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/green" android:orientation="horizontal" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="10dp"> <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="0dp" android:layout_height="175dp" android:layout_gravity="center_horizontal" android:layout_weight="1" android:background="#fff" android:gravity="right" > <ImageView android:id="@+id/imageView1" android:layout_width="110dp" android:layout_height="match_parent" android:layout_weight="1" android:src="@drawable/ic_event_image" /> <TextView android:id="@+id/tuxtView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" […]

Android自定义视图中的findViewById()

我写了我的自定义视图,我想更新一些其他的意见后,我的自定义视图交互。 主要布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/display_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="text" android:layout_centerHorizontal="true" android:tag="name" android:ems="10" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:ems="10" android:id="@+id/id_number" android:layout_centerHorizontal="true" android:layout_below="@id/display_name"/> <ge.altasoft.custom_views.IdNumber android:id="@+id/custom_id_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/id_number" android:paddingLeft="35dip" custom:firstName="@id/display_name"/> </RelativeLayout> 自定义视图布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <EditText android:id="@+id/id_number_custom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:ems="10" android:paddingRight="35dip" /> <ImageButton android:id="@+id/load_data_button" android:layout_width="30dip" […]

在fragment中findViewById

有没有办法在片段的范围内通过id查找视图? 我正在使用一系列的片段来呈现一个专门的列表。 碎片从布局加载,所以他们的小部件都有相同的ID。 我想我可以找出一种方法来给每个小部件创build过程中(或之后)的自定义ID。 然而,如果我能以某种方式限制findViewById到片段的范围,那将会好很多。

在Android上对类进行强制types转换

我在Android上遇到一个ClassCastExceptionexception的问题。 一个class级不能铸成同一class级: java.lang.RuntimeException: Unable to start activity ComponentInfo: java.lang.ClassCastException: com.example.model.BadeWrapper cannot be cast to com.example.model.BadgeWrapper java.lang.ClassCastException: com.example.events.widgets.TouchyWebView cannot be cast to com.example.events.widgets.TouchyWebView java.lang.ClassCastException: com.example.friends.widgets.FriendsTabView cannot be cast to com.example.friends.widgets.FriendsTabView 当我find有错误的行时,它所做的只是通过id查找视图或使用参数创build片段,例如: FriendsTabView friendsTabView; friendsTabView = (FriendsTabView) view.findViewById(R.id.friends_bottom_tab_panel); 正如我的BugSense告诉,这个问题只发生在Android 5.0.0(三星SM-G900F)的三星Galaxy S5。 我从未在其他设备上遇到过这个问题: 摩托罗拉Moto G第一代(Android 5.0.1) 三星Galaxy S3 Mini(Android 4.1.2) LG G2 Mini(Android 4.4.2) 索尼Xperia L(Android 4.1.2) 有人遇到过这个问题吗? […]

在android中没有扩展Activity的类中使用findviewbyid

我有一个类,目前正在扩展活动,我有像findViewById,ArrayAdapter等方法我想把它变成一个独立的类,但所有上述方法变得不确定。 问题是什么? 不应该导入类是不够的? 例如,我导入android.view.View为findViewById,但它仍然没有区别。 请指教。

从Activity的onCreate中访问片段视图

我正在为Android创build我的第一个应用程序,我有一个Fragment被添加到Activity的onCreate()方法的Activity 。 我面临的问题是我无法从Activity的onCreate()方法中findFragment包含的任何视图。 其他线程提示说,这是因为Fragment还没有被夸大,所以findViewById()将会为Fragment包含的任何视图返回null。 这是我的意思: 活动: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("activity onCreate"); setContentView(R.layout.activity_main); if (savedInstanceState != null) { return; } initialiseUI(); // Fragment added to Activity System.out.println("end of activity onCreate"); } 分段: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { System.out.println("fragment onCreateView"); return inflater.inflate(R.layout.event_log, container, false); } 这将打印结果: 活动onCreate结束活动onCreate片段onCreateView 由于这个顺序,任何试图在Activity的onCreate()方法(使用findViewById() […]

findViewById()上的NoSuchFieldError

有两个我想要合并的Android项目,一个是Main,另一个是作为Library链接的。 但是我在这方面有一些麻烦: Button modificarC; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_menu_calificaciones); modificarC = (Button) findViewById(R.id.btn_aseso); //HERE 我尝试了项目清洁…也有我的依赖关系的android-support-v4.jar 这是我的痕迹: 04-24 19:39:52.568: E/AndroidRuntime(9486): FATAL EXCEPTION: main 04-24 19:39:52.568: E/AndroidRuntime(9486): java.lang.NoSuchFieldError: com.utez.sistemas.sam.R$id.btn_aseso 04-24 19:39:52.568: E/AndroidRuntime(9486): at com.utez.sistemas.sam.calificaciones.CalificacionesActivity.onCreate(CalificacionesActivity.java:67) 04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.Activity.performCreate(Activity.java:4465) 04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 04-24 19:39:52.568: E/AndroidRuntime(9486): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) […]