タイトルには、フラグメント内にカスタムアプリランチャーを作成する必要があります。私はここで読んだいくつかの答えに基づいてコードを作成しましたが、とにかく、その上にアプリを表示することはできません。フラグメント内のGridviewアプリランチャー
これは、アダプタクラスです:
public class ShortcutAdapter extends BaseAdapter {
private Context mContext;
private List<ResolveInfo> appsList;
PackageManager mPackageManager;
public ShortcutAdapter(List<ResolveInfo> appsList, Context mContext) {
this.appsList = appsList;
this.mContext = mContext;
mPackageManager = mContext.getPackageManager();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
ResolveInfo resolveInfo = appsList.get(position);
imageView.setImageDrawable(resolveInfo.loadIcon(mPackageManager));
return imageView;
}
}
そして、これがフラグメントである:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.settings_layout, container, false);
GridView mGrid = (GridView) view.findViewById(R.id.gridview);
//Load list on adapter
mGrid.setAdapter(new ShortcutAdapter(loadApps(), getContext()));
//Listener gridview items
mGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ResolveInfo checkedResolveInfo = (ResolveInfo) parent.getItemAtPosition(position);
ActivityInfo clickedActivityInfo = checkedResolveInfo.activityInfo;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClassName(
clickedActivityInfo.applicationInfo.packageName,
clickedActivityInfo.name);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(intent);
}
});
return view;
}
/*Load apps*/
private List<ResolveInfo> loadApps() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appsList = getActivity().getPackageManager().queryIntentActivities(mainIntent, 0);
return appsList;
}
コードは、あなたがインターネットのまわりのこれについてのいくつかのチュートリアルでは、私の中で見つけることができるのと同じですGridViewにアプリを表示することはできません。
編集 - 以下のどれが何のアプリのアイコンが表示されないことになります
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="120dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center_horizontal"
android:layout_marginTop="60dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"/>
</LinearLayout>
投稿を編集してgridviewを追加しました。とにかく、私は 'getCount()'と 'getItemId()'メソッドで私は 'return 0'を持っていることが分かります。私はそこに何を置くべきですか? – masmic
さて、私はこれらのメソッドの変更を解決しました。 – masmic