Java Include-in-Android:findviewbyd返回null
我有一些应用程序。 我在安卓5.1上编写并测试了它。当我尝试在Android 6.0上运行我的应用程序时,我遇到了一个例外。在我尝试绑定一个FloatingActionButton并设置OnClickListener后出现异常,原因是null。当我尝试使用FrameLayout从“include”指令获取FindViewById时,FindViewById返回null MainActivity.javaJava Include-in-Android:findviewbyd返回null,java,android,findviewbyid,Java,Android,Findviewbyid,我有一些应用程序。 我在安卓5.1上编写并测试了它。当我尝试在Android 6.0上运行我的应用程序时,我遇到了一个例外。在我尝试绑定一个FloatingActionButton并设置OnClickListener后出现异常,原因是null。当我尝试使用FrameLayout从“include”指令获取FindViewById时,FindViewById返回null MainActivity.java public class MainActivity extends AppCompatAct
public class MainActivity extends AppCompatActivity {
private Context instance;
private MainPagerAdapter mSectionsPagerAdapter;
public ViewPager mViewPager;
FloatingActionButton fab;
FloatingActionButton fab_settings;
TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mSectionsPagerAdapter = new MainPagerAdapter(getSupportFragmentManager(), this);
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(fabOnClick);
fab_settings = (FloatingActionButton) findViewById(R.id.fab_settings); // <---- Returns null
fab_settings.setOnClickListener(setsOnClick); // <---- Exception
}
}
致:
之后,
fab_settings
仍然为空。我不明白为什么 您可以为setOnClickListerner方法的FloatingActionButton编写类似的代码
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Write here anything that you wish to do on click of FAB
}
});
首先查找具有fab_frame id的framelayout。第二个framelayout.findviewbyid(您的fab id) 检查此问题您尚未声明“fabOnClick”和“SetOnClick”。声明它们,希望它能解决问题
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(fabOnClick);
fab_settings = (FloatingActionButton) findViewById(R.id.fab_settings); //
fab_settings.setOnClickListener(setsOnClick); // <---- Exception
fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setonclick监听器(fabOnClick);
fab_设置=(FloatingActionButton)findViewById(R.id.fab_设置);//
fab_settings.setOnClickListener(setonclick);// 我解决了我的问题
这是我的错误。我没有注意到活动所在的新文件夹layout-v23
。删除layout-v23
后,我的问题得到解决
谢谢大家。这不是问题/问题。您是否可以编辑您的答案并将logcat中的日志粘贴到错误中?为什么我感觉错误来自viewPager和tabLayout。这两个都不会在布局文件中声明。请从logcat粘贴日志。您是否尝试将FrameLayout的高度设置为“wrap_content”
?或者它必须是“match\u parent”
?更新activity\u main.xml
“wrap\u content”
或“match\u parent”
这没关系-返回null。他说:“当我试图从“include”指令使用FrameLayout获取FindViewById时,它返回null。”fabOnClick
和SetOnClick
不是问题。帧为空。此解决方案应该可以工作,如果不行,那么您应该彻底检查其他问题哪些问题可以解决?尝试从includeI中删除id。我试过了,它不起作用了fab_布局=(FrameLayout)findviewbyd(R.id.fab_框架);fab_设置=(FloatingActionButton)fab_布局.findViewById(R.id.fab_设置)`
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_menu_white_24dp"
app:fabSize="mini" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_menu_white_24dp"
app:fabSize="mini" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_menu_white_24dp"
app:fabSize="mini" />
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Write here anything that you wish to do on click of FAB
}
});
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(fabOnClick);
fab_settings = (FloatingActionButton) findViewById(R.id.fab_settings); //
fab_settings.setOnClickListener(setsOnClick); // <---- Exception
View frame = findViewById(R.id.fab_frame);
fab_settings = frame.findViewById(R.id.fab_settings);
fab_settings.setOnClickListener(setsOnClick);