2014-10-03 5 views
0

Я разрабатываю свое первое приложение, и у меня есть следующий код в моей работе, который теперь я хочу преобразовать в Фрагмент (для использования активности с вкладками);Как преобразовать эту операцию в фрагмент?

public class StatTab1 extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.stattab1); 

     ListView lview = (ListView) findViewById(R.id.listview); 
     populateList(); 
     ListViewAdapter adapter = new ListViewAdapter(this, list); 
     lview.setAdapter(adapter); 
    } 
... 

Я изменил код таким образом:

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: Не удается запустить активность ComponentInfo java.lang.NullPointerException.

Вот LogCat:

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 
+0

Можете вставить здесь сообщение об ошибке? –

+0

Я редактировал свой вопрос, добавляя сообщения об ошибках LogCat. Спасибо – smartmouse

+0

Спасибо. Какая строка - строка StatTab1.java 31? Похоже, это ошибка. –

ответ

1

я, наконец, выяснить проблему и я решил. Это делает трюк:

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; 
    } 
... 
+0

Прохладный, я собирался предложить переместить его в onCreateView. Вот связанный пост, где это был принятый ответ: http://stackoverflow.com/questions/9488595/getview-returning-null-when-fragment-has-been-created-from-an-activity –

+0

Я выясняю проблему один: P Спасибо вам за вашу поддержку;) – smartmouse

Смежные вопросы