Android 如何将此活动转换为片段?
我正在开发我的第一个应用程序,我的活动中有以下代码,现在我想将其转换为片段(使用选项卡式活动) 我以这种方式更改了代码:Android 如何将此活动转换为片段?,android,android-fragments,android-activity,android-view,findviewbyid,Android,Android Fragments,Android Activity,Android View,Findviewbyid,我正在开发我的第一个应用程序,我的活动中有以下代码,现在我想将其转换为片段(使用选项卡式活动) 我以这种方式更改了代码: public class StatTab1 extends Fragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView lview = (ListView) getView().fi
public class StatTab1 extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView lview = (ListView) getView().findViewById(R.id.listview);
populateList();
ListViewAdapter adapter = new ListViewAdapter(getActivity(), list);
lview.setAdapter(adapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.stattab1, container, false);
return rootView;
}
...
我收到以下错误:java.lang.RuntimeException:无法启动activity ComponentInfo java.lang.NullPointerException
以下是日志:
10-03 21:10:30.915: E/AndroidRuntime(18005): FATAL EXCEPTION: main
10-03 21:10:30.915: E/AndroidRuntime(18005): Process: com.example.myapp, PID: 18005
10-03 21:10:30.915: E/AndroidRuntime(18005): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.Stats}: java.lang.NullPointerException
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.ActivityThread.access$800(ActivityThread.java:144)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.os.Handler.dispatchMessage(Handler.java:102)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.os.Looper.loop(Looper.java:136)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.ActivityThread.main(ActivityThread.java:5146)
10-03 21:10:30.915: E/AndroidRuntime(18005): at java.lang.reflect.Method.invokeNative(Native Method)
10-03 21:10:30.915: E/AndroidRuntime(18005): at java.lang.reflect.Method.invoke(Method.java:515)
10-03 21:10:30.915: E/AndroidRuntime(18005): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
10-03 21:10:30.915: E/AndroidRuntime(18005): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
10-03 21:10:30.915: E/AndroidRuntime(18005): at dalvik.system.NativeStart.main(Native Method)
10-03 21:10:30.915: E/AndroidRuntime(18005): Caused by: java.lang.NullPointerException
10-03 21:10:30.915: E/AndroidRuntime(18005): at com.example.myapp.StatTab1.onCreate(StatTab1.java:31)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.Fragment.performCreate(Fragment.java:1678)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.BackStackRecord.run(BackStackRecord.java:684)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.Activity.performStart(Activity.java:5240)
10-03 21:10:30.915: E/AndroidRuntime(18005): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178)
10-03 21:10:30.915: E/AndroidRuntime(18005): ... 11 more
我终于解决了这个问题。这样做的诀窍:
public class StatTab1 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.stattab1, container, false);
ListView lview = (ListView) rootView.findViewById(R.id.listview);
populateList();
ListViewAdapter adapter = new ListViewAdapter(getActivity(), list);
lview.setAdapter(adapter);
return rootView;
}
...
你能为我们粘贴错误消息吗?我编辑了我的问题,添加了LogCat错误消息。谢谢你,谢谢。哪一行是statab1.java第31行?看起来这就是错误所在。ListView lview=(ListView)getView().findViewById(R.id.ListView);酷,我正要建议将其移动到onCreateView。这里有一个相关的帖子,这是公认的答案:我自己解决了这个问题:P无论如何,谢谢你的支持;)
public class StatTab1 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.stattab1, container, false);
ListView lview = (ListView) rootView.findViewById(R.id.listview);
populateList();
ListViewAdapter adapter = new ListViewAdapter(getActivity(), list);
lview.setAdapter(adapter);
return rootView;
}
...