getActivity返回null从片段 [英] getActivity returning null from fragment

查看:154
本文介绍了getActivity返回null从片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有关学校,我想提出一个Android应用程序。对于这个应用程序我有一个片段,这说明只有串一个gridview,从数据库中。为此,我需要一个片段。当我打电话getActivity(),它返回null。该onAttach方法,正如<一个href="http://stackoverflow.com/questions/6215239/getactivity-returns-null-in-fragment-function">here没有得到应用程序崩溃之前调用。我应该如何解决这个问题?
weekFragmetn.xml:

 包nl.siebeh.schoolmate;

进口的java.util.ArrayList;

进口android.app.Activity;
进口android.content.Context;
进口android.os.Bundle;
进口android.support.v4.app.Fragment;
进口android.util.Log;
进口android.view.ContextMenu;
进口android.view.ContextMenu.ContextMenuInfo;
进口android.view.LayoutInflater;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.GridView;

公共类weekFragment扩展片段{
    dbLaye​​r分贝;
    语境mContext;

    @覆盖
    公共无效onAttach(活动活动){
        mContext = getActivity();
        Log.i(同学,onAttach称为);
        super.onAttach(活动);
    }

    公共weekFragment的newInstance(字符串名称){
        Log.i(同学,的newInstance称为);
        DB =新dbLaye​​r(mContext);
        weekFragment片段=新weekFragment();
        ArrayList的&LT; ArrayList的&LT;对象&gt;&GT;结果= NULL;

        如果(标题==leraren){
            结果= db.getAllRowsAsArrays(weekTeacher,NULL);
        }否则,如果(标题==locatie){
            结果= db.getAllRowsAsArrays(weekLocation,NULL);
        }否则,如果(标题==vakken){
            结果= db.getAllRowsAsArrays(weekSubjects,NULL);
        }

        String []数组=新的String [60];

        的for(int i = 0; I&LT; 60;我++){
            数组[我] =;
        }

        阵列[1] = getResources()getStringArray(R.array.days)[0];
        阵列[2] = getResources()getStringArray(R.array.days)[1]。
        阵列[3] = getResources()getStringArray(R.array.days)[2]。
        阵列[4] = getResources()getStringArray(R.array.days)[3]。
        阵列[5] = getResources()getStringArray(R.array.days)[4]。

        的for(int i = 1;我小于10;我++){
            阵列[I] = Integer.toString(ⅰ);
        }

        对于(INT位置= 0;位置&LT; result.size();位置++){
            ArrayList的&LT;对象&gt;行= result.get(位置);
            INT小时= Integer.valueOf(row.get(1)的ToString())的intValue();
            日整型= Integer.valueOf(row.get(0)的ToString())的intValue();
            INT POS = 6 *小时+天;
            阵列[POS] = row.get(位置)的ToString();
        }
        fragment.mContent =阵列;

        返回片段;
    }

    私有String [] mContent = {};

    @覆盖
    公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
        如果(集装箱== NULL){
            返回null;
        }
        视图V = inflater.inflate(R.layout.week_fragment,集装箱,假);
        GridView控件的GridView =(GridView控件)v.findViewById(R.id.gridview);
        gridview.setAdapter(新weekAdapter(mContext,mContent));
        返回gridview的;
    }

    @覆盖
    公共布尔onContextItemSelected(菜单项项){
        返回super.onContextItemSelected(项目);
    }

    @覆盖
    公共无效onCreateContextMenu(文本菜单菜单,视图V,ContextMenuInfo menuInfo){
        super.onCreateContextMenu(菜单,V,menuInfo);
    }



}
 

logcat的:(因为点击该项目的启动活动的片段开始/嵌入列表,该项目)

  09-29 19:10:56.611:信息/ ActivityManager(70):开始:意向{CMP = nl.siebeh.schoolmate / .overviewWeek}从PID 536
09-29 19:10:56.970:信息/同学(536):所谓的newInstance
09-29 19:11:06.631:WARN / ActivityManager(70):启动超时已过期,放弃唤醒锁!
09-29 19:11:06.671:WARN / ActivityManager(70):活动空闲超时时间为HistoryRecord {40770188 nl.siebeh.schoolmate / .overviewWeek}
09-29 19:12:20.661:DEBUG / SntpClient(70):请求时失败:产生java.net.SocketException:地址族不支持的协议
09-29 19:14:11.811:DEBUG / dalvikvm(536):调试器分离;对象注册了413项
09-29 19:14:11.811:ERROR /同学(536):显示java.lang.NullPointerException
09-29 19:14:11.811:信息/同学(536):上下文为null
09-29 19:14:11.820:WARN / System.err的(536):显示java.lang.NullPointerException
09-29 19:14:11.820:WARN / System.err的(536):在android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
09-29 19:14:11.820:WARN / System.err的(536):在nl.siebeh.schoolmate.dbLaye​​r&LT; INIT&GT;(dbLaye​​r.java:50)。
09-29 19:14:11.820:WARN / System.err的(536):在nl.siebeh.schoolmate.weekFragment.newInstance(weekFragment.java:31)
09-29 19:14:11.820:WARN / System.err的(536):在nl.siebeh.schoolmate.fragmentAdapter.getItem(fragmentAdaptar.java:21)
09-29 19:14:11.820:WARN / System.err的(536):在nl.siebeh.schoolmate.titleFragmentAdapter.getItem(titleFragmentAdapter.java:1)
09-29 19:14:11.820:WARN / System.err的(536):在android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:62)
09-29 19:14:11.820:WARN / System.err的(536):在android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321)
09-29 19:14:11.820:WARN / System.err的(536):在android.support.v4.view.ViewPager.populate(ViewPager.java:441)
09-29 19:14:11.820:WARN / System.err的(536):在android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563)
09-29 19:14:11.820:WARN / System.err的(536):在android.view.View.dispatchAttachedToWindow(View.java:6156)
09-29 19:14:11.820:WARN / System.err的(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122)
09-29 19:14:11.820:WARN / System.err的(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820:WARN / System.err的(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820:WARN / System.err的(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820:WARN / System.err的(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820:WARN / System.err的(536):在android.view.ViewRoot.performTraversals(ViewRoot.java:765)
09-29 19:14:11.830:WARN / System.err的(536):在android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
09-29 19:14:11.840:WARN / System.err的(536):在android.os.Handler.dispatchMessage(Handler.java:99)
09-29 19:14:11.840:WARN / System.err的(536):在android.os.Looper.loop(Looper.java:123)
09-29 19:14:11.840:WARN / System.err的(536):在android.app.ActivityThread.main(ActivityThread.java:3683)
09-29 19:14:11.840:WARN / System.err的(536):在java.lang.reflect.Method.invokeNative(本机方法)
09-29 19:14:11.840:WARN / System.err的(536):在java.lang.reflect.Method.invoke(Method.java:507)
09-29 19:14:11.850:WARN / System.err的(536):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
09-29 19:14:11.850:WARN / System.err的(536):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-29 19:14:11.850:WARN / System.err的(536):在dalvik.system.NativeStart.main(本机方法)
09-29 19:14:11.850:DEBUG / AndroidRuntime(536):关闭虚拟机
09-29 19:14:11.850:WARN / dalvikvm(536):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40015560)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):致命异常:主要
09-29 19:14:11.870:ERROR / AndroidRuntime(536):显示java.lang.NullPointerException
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在nl.siebeh.schoolmate.weekFragment.newInstance(weekFragment.java:49)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在nl.siebeh.schoolmate.fragmentAdapter.getItem(fragmentAdaptar.java:21)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在nl.siebeh.schoolmate.titleFragmentAdapter.getItem(titleFragmentAdapter.java:1)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:62)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.support.v4.view.ViewPager.populate(ViewPager.java:441)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.View.dispatchAttachedToWindow(View.java:6156)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.ViewRoot.performTraversals(ViewRoot.java:765)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.os.Handler.dispatchMessage(Handler.java:99)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.os.Looper.loop(Looper.java:123)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在android.app.ActivityThread.main(ActivityThread.java:3683)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在java.lang.reflect.Method.invokeNative(本机方法)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在java.lang.reflect.Method.invoke(Method.java:507)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-29 19:14:11.870:ERROR / AndroidRuntime(536):在dalvik.system.NativeStart.main(本机方法)
09-29 19:14:11.890:WARN / ActivityManager(70):强制整理活动nl.siebeh.schoolmate / .overviewWeek
09-29 19:14:12.413:WARN / ActivityManager(70):活动暂停超时HistoryRecord {40770188 nl.siebeh.schoolmate / .overviewWeek}
09-29 19:14:21.910:WARN / ActivityManager(70):启动超时已过期,放弃唤醒锁!
09-29 19:14:22.441:WARN / ActivityManager(70):活动空闲超时时间为HistoryRecord {4070c7a0 nl.siebeh.schoolmate / .schoolmate}
09-29 19:14:32.451:WARN / ActivityManager(70):活动破坏超时HistoryRecord {40770188 nl.siebeh.schoolmate / .overviewWeek}
 

解决方案

您不要的有无 getActivity()呼叫,这使得难以回答的问题。

您已经看到了 NullPointerException异常,因为 mContext 。我的猜测是, mContext ,因为,在code到 fragmentAdapter ,您呼叫新weekFragment(),然后调用的newInstance()就可以了。您presumably以为你跟随一些在片段 JavaDoc中列出的模式,但在那里,的newInstance()静态方法,而不是因为你有在这里一个实例方法。

取几乎所有的code OUT 的newInstance(),并将其移至 onActivityCreated()或当片段附着到活动,以便 getActivity()的工作原理。一路上,删除 onAttach()的实施和 mContext 数据成员,这两个国家都需要(和 mContext 填充在一个非常可怕的方式)。

For school I am making an android app. For this app I have a fragment, which shows a gridview with just strings, from a database. For this I need a fragment. When I call getActivity(), it returns null. The onAttach method, as suggested here doesn't get called before the app crashes. How should I solve this?
weekFragmetn.xml:

package nl.siebeh.schoolmate;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;

public class weekFragment extends Fragment {
    dbLayer db;
    Context mContext;

    @Override
    public void onAttach(Activity activity) {
        mContext = getActivity();
        Log.i("Schoolmate","onAttach called");
        super.onAttach(activity);
    }

    public weekFragment newInstance(String title) {
        Log.i("Schoolmate","newInstance called");
        db = new dbLayer(mContext);
        weekFragment fragment = new weekFragment();
        ArrayList<ArrayList<Object>> result = null;

        if(title == "leraren"){
            result = db.getAllRowsAsArrays("weekTeacher", null);
        }else if(title == "locatie"){
            result = db.getAllRowsAsArrays("weekLocation", null);
        }else if(title == "vakken"){
            result = db.getAllRowsAsArrays("weekSubjects", null);
        }

        String[] array = new String[60];

        for(int i = 0; i < 60; i++){
            array[i] = "";
        }

        array[1] = getResources().getStringArray(R.array.days)[0];
        array[2] = getResources().getStringArray(R.array.days)[1];
        array[3] = getResources().getStringArray(R.array.days)[2];
        array[4] = getResources().getStringArray(R.array.days)[3];
        array[5] = getResources().getStringArray(R.array.days)[4];

        for(int i = 1; i < 10; i++){
            array[i] = Integer.toString(i);
        }

        for(int position = 0; position < result.size(); position++){
            ArrayList<Object> row = result.get(position);
            int hour = Integer.valueOf(row.get(1).toString()).intValue();
            int day =  Integer.valueOf(row.get(0).toString()).intValue();
            int pos = 6 * hour + day;
            array[pos] = row.get(position).toString();
        }
        fragment.mContent = array;

        return fragment;
    }

    private String[] mContent = {""};

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (container == null) {
            return null;
        }
        View v = inflater.inflate(R.layout.week_fragment, container, false);
        GridView gridview = (GridView) v.findViewById(R.id.gridview);
        gridview.setAdapter(new weekAdapter(mContext, mContent));
        return gridview;
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        return super.onContextItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
    }



}

logcat: (since click on the item the item in a list that starts the activity, where the fragment is started/embedded)

    09-29 19:10:56.611: INFO/ActivityManager(70): Starting: Intent { cmp=nl.siebeh.schoolmate/.overviewWeek } from pid 536
09-29 19:10:56.970: INFO/Schoolmate(536): newInstance called
09-29 19:11:06.631: WARN/ActivityManager(70): Launch timeout has expired, giving up wake lock!
09-29 19:11:06.671: WARN/ActivityManager(70): Activity idle timeout for HistoryRecord{40770188 nl.siebeh.schoolmate/.overviewWeek}
09-29 19:12:20.661: DEBUG/SntpClient(70): request time failed: java.net.SocketException: Address family not supported by protocol
09-29 19:14:11.811: DEBUG/dalvikvm(536): Debugger has detached; object registry had 413 entries
09-29 19:14:11.811: ERROR/SchoolMate(536): java.lang.NullPointerException
09-29 19:14:11.811: INFO/SchoolMate(536): Context is null
09-29 19:14:11.820: WARN/System.err(536): java.lang.NullPointerException
09-29 19:14:11.820: WARN/System.err(536):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
09-29 19:14:11.820: WARN/System.err(536):     at nl.siebeh.schoolmate.dbLayer.<init>(dbLayer.java:50)
09-29 19:14:11.820: WARN/System.err(536):     at nl.siebeh.schoolmate.weekFragment.newInstance(weekFragment.java:31)
09-29 19:14:11.820: WARN/System.err(536):     at nl.siebeh.schoolmate.fragmentAdapter.getItem(fragmentAdaptar.java:21)
09-29 19:14:11.820: WARN/System.err(536):     at nl.siebeh.schoolmate.titleFragmentAdapter.getItem(titleFragmentAdapter.java:1)
09-29 19:14:11.820: WARN/System.err(536):     at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:62)
09-29 19:14:11.820: WARN/System.err(536):     at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321)
09-29 19:14:11.820: WARN/System.err(536):     at android.support.v4.view.ViewPager.populate(ViewPager.java:441)
09-29 19:14:11.820: WARN/System.err(536):     at android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563)
09-29 19:14:11.820: WARN/System.err(536):     at android.view.View.dispatchAttachedToWindow(View.java:6156)
09-29 19:14:11.820: WARN/System.err(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122)
09-29 19:14:11.820: WARN/System.err(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536):     at android.view.ViewRoot.performTraversals(ViewRoot.java:765)
09-29 19:14:11.830: WARN/System.err(536):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
09-29 19:14:11.840: WARN/System.err(536):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 19:14:11.840: WARN/System.err(536):     at android.os.Looper.loop(Looper.java:123)
09-29 19:14:11.840: WARN/System.err(536):     at android.app.ActivityThread.main(ActivityThread.java:3683)
09-29 19:14:11.840: WARN/System.err(536):     at java.lang.reflect.Method.invokeNative(Native Method)
09-29 19:14:11.840: WARN/System.err(536):     at java.lang.reflect.Method.invoke(Method.java:507)
09-29 19:14:11.850: WARN/System.err(536):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-29 19:14:11.850: WARN/System.err(536):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-29 19:14:11.850: WARN/System.err(536):     at dalvik.system.NativeStart.main(Native Method)
09-29 19:14:11.850: DEBUG/AndroidRuntime(536): Shutting down VM
09-29 19:14:11.850: WARN/dalvikvm(536): threadid=1: thread exiting with uncaught exception (group=0x40015560)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): FATAL EXCEPTION: main
09-29 19:14:11.870: ERROR/AndroidRuntime(536): java.lang.NullPointerException
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at nl.siebeh.schoolmate.weekFragment.newInstance(weekFragment.java:49)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at nl.siebeh.schoolmate.fragmentAdapter.getItem(fragmentAdaptar.java:21)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at nl.siebeh.schoolmate.titleFragmentAdapter.getItem(titleFragmentAdapter.java:1)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:62)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.support.v4.view.ViewPager.populate(ViewPager.java:441)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.View.dispatchAttachedToWindow(View.java:6156)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.ViewRoot.performTraversals(ViewRoot.java:765)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.os.Looper.loop(Looper.java:123)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at android.app.ActivityThread.main(ActivityThread.java:3683)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at java.lang.reflect.Method.invokeNative(Native Method)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at java.lang.reflect.Method.invoke(Method.java:507)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-29 19:14:11.870: ERROR/AndroidRuntime(536):     at dalvik.system.NativeStart.main(Native Method)
09-29 19:14:11.890: WARN/ActivityManager(70):   Force finishing activity nl.siebeh.schoolmate/.overviewWeek
09-29 19:14:12.413: WARN/ActivityManager(70): Activity pause timeout for HistoryRecord{40770188 nl.siebeh.schoolmate/.overviewWeek}
09-29 19:14:21.910: WARN/ActivityManager(70): Launch timeout has expired, giving up wake lock!
09-29 19:14:22.441: WARN/ActivityManager(70): Activity idle timeout for HistoryRecord{4070c7a0 nl.siebeh.schoolmate/.schoolmate}
09-29 19:14:32.451: WARN/ActivityManager(70): Activity destroy timeout for HistoryRecord{40770188 nl.siebeh.schoolmate/.overviewWeek}

解决方案

You do not have a getActivity() call, which makes it difficult to answer the question.

You are getting a NullPointerException because mContext is null. My guess is that mContext is null because, in the code to fragmentAdapter, you are calling new weekFragment(), then calling newInstance() on it. You presumably thought you were following some patterns outlined in the Fragment JavaDocs, but in there, newInstance() is a static method, not an instance method as you have it here.

Take just about all of the code out of newInstance() and move it to onActivityCreated() or some time when the fragment is attached to the activity so getActivity() works. Along the way, delete your onAttach() implementation and the mContext data member, neither of which are needed (and the mContext is populated in a very scary way).

这篇关于getActivity返回null从片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆