android - findViewById(R.id.tabhost) 始终返回 null

标签 android fragment-tab-host

我已经在 Google Play 中拥有一个应用程序,并且在升级 Android Studio 之前完全没有问题。必须修改 build.gradle 以便可以编译项目以下是我更改的内容:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.google.android.gms:play-services:6+'
    compile 'com.android.support:support-v4:+'
}

唯一的变化是 com.android.support:appcompat-v7:+ 更改为 com.android.support:appcompat-v7:21.0.0

我的问题是 .findViewById(R.id.tabhost) 总是返回 null,导致应用程序崩溃。这是我的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

我的java代码:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;

public class MenuLeftFragment extends Fragment {
    private FragmentTabHost mFragmentTabHost;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mView = getView();
        if (mView != null) {
            mFragmentTabHost = (FragmentTabHost) mView
                    .findViewById(R.id.tabhost);

有什么想法吗?谢谢。

最佳答案

您应该在 onCreateView() 中执行此操作,您应该在其中定义如下:

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.your_layout, container, false);
    mFragmentTabHost = (FragmentTabHost) v.findViewById(R.id.tabhost);
    return v;
}

如果您想保留此代码,如果您在 onCreate() 上有 View ,则 onActivityCreated() 上的 getView() 是错误的 你可以这样做:

mView = v; 

然后在您的 onActivityCreated() 中,而不是调用 getView() 使用 mView

然后它应该可以工作。

关于android - findViewById(R.id.tabhost) 始终返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782495/

相关文章:

android - 底部带有进度条的无尽 RecyclerView

android - Joda DateTimeFormat 在多个设备中表现不同 (Android)

android - 删除选项卡按钮周围的灰色边框(使用 FragmentTabHost)

底部带有图标选择问题的 Android FragmentTabHost 选项卡

Android ActionBar 的自定义 View 未填充父级

android - 无法通过 Unity 在 Android 上启动 Activity

android - findFragmentByTag - 在 FragmentTabHost 中寻找 fragment - 始终为 null

android - 在 TabWidget 中更改文本颜色和选择器

android - 无法在移动设备上显示 PopupWindow 消息

android - FragmentTabHost 选项卡的内容未出现