2017-04-24 106 views
0

我正在构建Android启动器,并在尝试将已安装的应用添加到GridView时不断崩溃。构建Android启动器

我想在GridView中添加已安装的应用程序的网格。

我的GridView的代码是

private void loadGridView() { 
    grid = (GridView) getActivity().findViewById(R.id.content); 

    ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(getActivity(), android.R.layout.simple_list_item_1, apps) { 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = getActivity().getLayoutInflater().inflate(R.layout.drawer_item, null); 
      } 

      ImageView appIcon = (ImageView) convertView.findViewById(R.id.icon_image); 
      appIcon.setImageDrawable(apps.get(position).icon); 

      TextView appLabel = (TextView) convertView.findViewById(R.id.icon_text); 
      appLabel.setText(apps.get(position).label); 

      return convertView; 
     } 
    }; 

    grid.setAdapter(adapter); 
} 

感谢

编辑1 - 我的继承人崩溃日志

Process: com.jenovaprojects.ubuntutouchlauncher, PID: 19156 

Theme: themes:{} 

java.lang.NullPointerException: Attempt to invoke virtual method 'void 
android.widget.GridView.setAdapter(android.widget.ListAdapter)' on a 
null object reference 

at 

com.jenovaprojects.ubuntutouchlauncher.homescreenfragments 
.AppsScope.load 
GridView(AppsScope.java:156) 

at 
com.jenovaprojects.ubuntutouchlauncher.homescreenfragments 
.AppsScope.onCr 
eateView(AppsScope.java:109) 

at 
android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 

at 
android.support.v4.app.FragmentManagerImpl.moveToState 
(FragmentManager.ja 
va:1299) 

at 
android.support.v4.app.FragmentManagerImpl. 
moveFragmentToExpectedState(Fr 
agmentManager.java:1528) 

at 
android.support.v4.app.FragmentManagerImpl. 
moveToState(FragmentManager.ja 
va:1595) 

at 
android.support.v4.app.BackStackRecord.executeOps 
(BackStackRecord.java:75 
8) 

at 
android.support.v4.app.FragmentManagerImpl.executeOps 
(FragmentManager.jav 
a:2363) 

at 
android.support.v4.app.FragmentManagerImpl.executeOpsTogether 
(FragmentMan 
ager.java:2149) 

at 
android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps 
(Fragment 
Manager.java:2103) 

at 
android.support.v4.app.FragmentManagerImpl.execSingleAction 
(FragmentManag 
er.java:1984) 

在 android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackSta ckRecord.java:626)

at 
android.support.v4.app.FragmentPagerAdapter.finishUpdate 
(FragmentPagerAda 
pter.java:143) 

at android.support.v4.view.ViewPager.populate(ViewPager.java:1268) 

at android.support.v4.view.ViewPager.populate(ViewPager.java:1116) 

at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642) 

at android.view.View.measure(View.java:18799) 

at 
android.support.constraint.ConstraintLayout.internalMeasureChildren 
(Const 
raintLayout.java:934) 

at 
android.support.constraint.ConstraintLayout.onMeasure 
(ConstraintLayout.ja 
va:973) 

at android.view.View.measure(View.java:18799) 

at android.view.ViewGroup.measureChildWithMargins 
(ViewGroup.java:5951) 

at 
android.support.design.widget.CoordinatorLayout. 
onMeasureChild(Coordinato 
rLayout.java:714) 

at 
android.support.design.widget.HeaderScrollingViewBehavior. 
onMeasureChild(
HeaderScrollingViewBehavior.java:90) 

at 
android.support.design.widget. 
AppBarLayout$ScrollingViewBehavior.onMeasur 
eChild(AppBarLayout.java:1391) 

at 
android.support.design.widget.CoordinatorLayout. 
onMeasure(CoordinatorLayo 
ut.java:784) 

at android.view.View.measure(View.java:18799) 

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 

at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 

at 
android.support.v7.widget.ContentFrameLayout.onMeasure 
(ContentFrameLayout 
.java:139) 

at android.view.View.measure(View.java:18799) 

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 

at 
android.widget.LinearLayout.measureChildBeforeLayout 
(LinearLayout.java:14 
58) 

at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) 

at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) 

at android.view.View.measure(View.java:18799) 

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 

at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 

at android.view.View.measure(View.java:18799) 

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 

at 
android.widget.LinearLayout.measureChildBeforeLayout 
(LinearLayout.java:14 
58) 

at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) 

at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) 

at android.view.View.measure(View.java:18799) 

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 

at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 

at 
com.android.internal.policy.PhoneWindow$DecorView.onMeasure 
(PhoneWindow.j 
ava:2899) 

at android.view.View.measure(View.java:18799) 

at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2108) 

at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1224) 

at android.view.ViewRootImpl.performTraversals(ViewRootImpl.ja 
+1

你可以添加崩溃日志? –

+0

@ DoronYakovlev-Golani崩溃日志已被添加,谢谢 –

回答

1

问题是(GridView) getActivity().findViewById(R.id.content)返回null。这将导致这里崩溃:

grid.setAdapter(adapter); 

要解决检查什么是网格的ID,并把它像这样:

grid = (GridView) getActivity().findViewById(R.id.your_grid_view); 
+0

感谢您的回复,我在XML布局中的网格ID是'内容',这就是我正在使用的......这就是我的混乱lol –

+0

我建议你调试并看看你为这次电话会得到什么。也许你有其他的布局,或者你在膨胀布局之前做出这个调用? –