来自另一个活动的getContext显示GridView

时间:2015-05-14 15:42:45

标签: android

我正在尝试在framgment中添加gridview。  这是Display.java中有错误的代码

        53-GridView gridview = (GridView) findViewById(R.id.gridview);
        54-
        55-gridview.setAdapter(new ImageAdapter(Tab1Fragment.getContext(null)));

我猜错误是因为我需要添加其他活动的上下文。

Tab1Fragment.java:

public class Tab1Fragment extends Fragment  {
    private static Context mContext;

    public Tab1Fragment(Context c)
    {  
       mContext = c; 
    } 

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View V = inflater.inflate(R.layout.tab1_view, container, false);

        return V;
    }

public static Context getContext(Context c) {
    c = mContext;
    return c;
  }
}

这是错误:

05-14 18:33:34.752: E/AndroidRuntime(28061):    at dalvik.system.NativeStart.main(Native Method)
05-14 18:33:34.752: E/AndroidRuntime(28061): Caused by: java.lang.NullPointerException
05-14 18:33:34.752: E/AndroidRuntime(28061):    at com.example.sqlfirst.Display.onCreate(Display.java:55)
05-14 18:33:34.752: E/AndroidRuntime(28061):    at android.app.Activity.performCreate(Activity.java:5389)
05-14 18:33:34.752: E/AndroidRuntime(28061):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
05-14 18:33:34.752: E/AndroidRuntime(28061):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2256)

2 个答案:

答案 0 :(得分:0)

您可以在

中使用Tab1Fragment.getActivity().getApplicationContext()
gridview.setAdapter(new ImageAdapter(Tab1Fragment.getActivity().getApplicationContext()));

...片段附加到活动后。

首先检查Tab1Fragment.getActivity()null

答案 1 :(得分:0)

您不应该将Application上下文与Views绑定,这会使垃圾收集变得困难,因为应用程序上下文不允许死对象被垃圾回收。我认为你要添加网格视图的片段, 假设

活动A

将保存网格视图F

的片段

A - > F --->网格视图

然后F.getActivity()足以完成这项工作。