findViewById(R.id.tabhost) 总是 return null
findViewById(R.id.tabhost) always return null
我在 Google 中有一个应用程序已经可以玩了,在我升级我的 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) 总是 return 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;
}
如果你想保留这段代码,onActivityCreated()
上的 getView()
是错误的,如果你对你的 onCreate()
有看法,你可以这样做:
mView = v;
然后在你的 onActivityCreated()
而不是调用 getView()
使用 mView
那么应该可以了。
我在 Google 中有一个应用程序已经可以玩了,在我升级我的 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) 总是 return 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;
}
如果你想保留这段代码,onActivityCreated()
上的 getView()
是错误的,如果你对你的 onCreate()
有看法,你可以这样做:
mView = v;
然后在你的 onActivityCreated()
而不是调用 getView()
使用 mView
那么应该可以了。