Articles of findviewbyid

View.findViewById()返回null

我有这个代码: private void inflateMenu() { if (menu == null) { mFanView = (LinearLayout) findViewById(R.id.fanView); final View v = LayoutInflater.from(getContext()).inflate( R.layout.sidemenu, mFanView); menu = (MenuView) v.findViewById(R.id.listViewMenu); } menu.setColors(backgroundColor, selectedColor, unselectedColor); } 调试时,v包含一个id等于R.id.listViewMenu + 1的MenuView。 当然这会在menu.setColors上抛出一个NPE。 为什么R.id.listViewMenu包含的ID不会导致XML中带有该ID的视图? 我试图清理我的项目,但它仍然保持不变。 编辑:发布请求的文件。 sidemenu.xml 编辑:问题解决了。 对于因为findViewById返回null而来到这里的任何人:清理项目。 如果它不起作用,请再次清理项目。 如果它不起作用,请清除所有项目。 直到它工作。 如果它不起作用,那么问。

使用findViewById()找不到视图

我通过调用findViewById()找不到TextView ,即使ID确实存在。 OtherActivity : public class OtherActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { TextView textView = (TextView)findViewById(R.ID.txt02); super.onCreate(savedInstanceState);//line 5 setContentView(R.layout.other_activity); //textView.setText(ACCESSIBILITY_SERVICE); Button button = (Button)findViewById(R.ID.otherActivity_Btn); button.setText(R.string.otherActivityBtn); button.setOnClickListener(new GoBackBtnListener(this)); } class GoBackBtnListener implements OnClickListener { OtherActivity other = null; public GoBackBtnListener(OtherActivity p_other) { other = p_other; } public void onClick(View v) { Intent […]

findViewById(int)在Android 3.1其他版本的一个特定按钮上返回null

这是我的第一个问题,但我正在尝试正确地提问。 由于标题只在一个按钮上说,只在android 3.1中,findViewById(int)返回null。 在Android 2.2上测试它可以工作,所有其他按钮都可以在两个Android版本中find。 它在此特定行之前和之后find按钮。 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonInfo = (Button)findViewById(R.id.buttonInfo);//fine buttonInfo.setOnClickListener(this); … Button buttonCallOpScreen = (Button)findViewById(R.id.buttonCallOpScreen);//always returns null in android 3.1 … Button buttonTakePicture = (Button)findViewById(R.id.buttonTakePictureMain);//fine buttonTakePicture.setOnClickListener(this); } main.xml : (我知道我不应该使用px ,但它只能在我的设备上工作,因此对于这种情况很好。) … … 到目前为止,任何帮助将不胜感激。 回答: 事实certificate这不仅仅是丑陋的。 由于有几个人在这个项目上工作,其中一个人似乎更改了layout-normal / main.xml中的名称。 虽然3.1之前的Android-Versions似乎加载layout / main.xml,但较新的版本使用layout-normal / main.xml。 因为如果该按钮的id是不同的findViewById(int)必须返回null,这是可以理解的。 很抱歉打扰你,谢谢你的评论! 由于我的声誉不到100,我无法回答我自己的问题关闭它,如果有人能发布这个答案我会接受它,谢谢。

何时使用菜单项id调用findViewById以确保它不为null?

我正在给菜单充气,并试图通过以下方式查找其中一个菜单项的视图: @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.main, menu); // will print `null` Log.i(“TAG”, String.valueOf(findViewById(R.id.action_hello))); return true; } 在结果中, null在Logcat中打印。 但是,如果我在调用findViewById之前添加一些延迟,它将返回正确的View对象: @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.main, menu); new AsyncTask() { @Override protected Void doInBackground(final Void… voids) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override […]

findViewById在静态方法中

我有这个静态方法: public static void displayLevelUp(int level, Context context) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.custom_level_coast, (ViewGroup) findViewById(R.id.toast_layout_root)); // this row TextView text = (TextView) layout.findViewById(R.id.toastText); text.setText(“This is a custom toast”); Toast toast = new Toast(context); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); Toast.makeText(context, String.valueOf(level), Toast.LENGTH_SHORT) .show(); } 但是,我无法弄清楚如何让第一个findViewById与它玩得很好,因为它说它是一个非静态方法。 我理解为什么会这么说,但必须有一个解决方法? 我将context传递给了这个方法但是无法一起完成它们。

如何用片段“findViewById”?

我最近将我的项目从Eclipse移到了Android Studio。 我试图让电子邮件function正常工作,但我收到“findViewById”错误。 我也收到“Toast.makeText”的错误。 你能帮忙解决这两个错误。 我class上的代码如下: package com.example.ishonours.witsbusapp; import android.app.Activity; import android.net.Uri; import android.os.Bundle; import android.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.content.Intent; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class ComplaintsFragment extends Fragment { //I added private EditText recipient; private EditText subject; private EditText body; private OnFragmentInteractionListener mListener; private static final String ARG_SECTION_NUMBER […]

FindViewById其中ID是动态字符串

我有一个40个方格的桌子,每个都有一个ID。 当我从另一个活动传递Bundle时,我需要从该包中提取Note,Color和ID。 然后应用程序将更改/添加文本并更改提取的ID指定的方块的背景。 每个方块都有int格式的ID。 从其他活动传递的每个ID都是字符串格式。 我无法弄清楚如何使它成为findViewById(R.id.passed_id),以及如何让两种不同的格式一起工作。 我试图改变每个方块的ID,但是eclipse说ID必须有一个字母和一个数字。 我迷路了….这是代码: package com.tt; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; import android.util.TypedValue; import android.view.Gravity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { String gotNotes; String n; String gotDOW; String gotID; public String Id; String gotHour; TextView notes; @Override public […]

Android O预览findViewById编译错误

我试图测试Android O Developer Preview的第二阶段。 项目创建后,我只是点击了构建并运行但我没有任何成功。 Android默认生成的代码如下: Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 发生编译错误。 Error:(18, 37) error: reference to findViewById is ambiguous both method findViewById(int) in Activity and method findViewById(int) in AppCompatActivity match where T is a type-variable: T extends View declared in method findViewById(int) 帮我! 我该如何解决这个错误? 编辑#1 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar […]

投射到按钮是多余的 – 为什么?

我刚刚从编译器中看到了这个有趣的消息,我不知道它为什么会发生。 情况就是这样 例1。 Button test = (Button) findViewById(R.id.someButtonId); test.setOnClickListener(this); 例2。 findViewById(R.id.someButtonId).setOnClickListener(this); 在第一个例子中,我需要将findViewById返回的对象转换为Button 。 在第二个例子中,我不必转换返回的对象,因为我没有使用另一个Button类对象。 如果我尝试通过它 ((Button)findViewById(R.id.someButtonId)).setOnClickListener(this); 我将得到警告Casting findViewById(R.id.someButtonId) to Button is redundant 。 为什么会这样? 我不是要删除强制警告。 我想知道这背后的逻辑以及如果我不尝试使用findViewById返回的对象初始化另一个对象,为什么不需要强制转换。

Android片段 – findViewById返回null

我有一个在互联网上似乎很常见的问题:我创建了一个只有一个片段的活动。 这是生成的代码: @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获取任何对象:它始终为null。 以下是生成的代码的其余部分: 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); […]