SupportLeanbackDemo: Fix crash of launch Detail from Search
Now DetailsFragment is expecting PhotoItem, SearchFragment should not pass a String to DetailsFragment. Change-Id: I7794c6a14dcaa1de1d1177f3288bb7460a45bf7d
This commit is contained in:
@@ -3,13 +3,17 @@ package com.example.android.leanback;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.support.v4.app.ActivityOptionsCompat;
|
||||||
import android.support.v17.leanback.widget.ArrayObjectAdapter;
|
import android.support.v17.leanback.widget.ArrayObjectAdapter;
|
||||||
import android.support.v17.leanback.widget.HeaderItem;
|
import android.support.v17.leanback.widget.HeaderItem;
|
||||||
|
import android.support.v17.leanback.widget.ImageCardView;
|
||||||
import android.support.v17.leanback.widget.ListRow;
|
import android.support.v17.leanback.widget.ListRow;
|
||||||
import android.support.v17.leanback.widget.ListRowPresenter;
|
import android.support.v17.leanback.widget.ListRowPresenter;
|
||||||
import android.support.v17.leanback.widget.ObjectAdapter;
|
import android.support.v17.leanback.widget.ObjectAdapter;
|
||||||
import android.support.v17.leanback.widget.OnItemClickedListener;
|
import android.support.v17.leanback.widget.OnItemViewClickedListener;
|
||||||
|
import android.support.v17.leanback.widget.Presenter;
|
||||||
import android.support.v17.leanback.widget.Row;
|
import android.support.v17.leanback.widget.Row;
|
||||||
|
import android.support.v17.leanback.widget.RowPresenter;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -32,7 +36,7 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm
|
|||||||
setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title));
|
setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title));
|
||||||
setTitle("Leanback Sample App");
|
setTitle("Leanback Sample App");
|
||||||
setSearchResultProvider(this);
|
setSearchResultProvider(this);
|
||||||
setOnItemClickedListener(new ItemClickedListener());
|
setOnItemViewClickedListener(new ItemViewClickedListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -66,9 +70,9 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm
|
|||||||
|
|
||||||
private void loadRows() {
|
private void loadRows() {
|
||||||
for (int i = 0; i < NUM_ROWS; ++i) {
|
for (int i = 0; i < NUM_ROWS; ++i) {
|
||||||
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter());
|
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new CardPresenter());
|
||||||
listRowAdapter.add("Hello world");
|
listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1));
|
||||||
listRowAdapter.add("This is a test");
|
listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_2));
|
||||||
HeaderItem header = new HeaderItem(i, mQuery + " results row " + i, null);
|
HeaderItem header = new HeaderItem(i, mQuery + " results row " + i, null);
|
||||||
mRowsAdapter.add(new ListRow(header, listRowAdapter));
|
mRowsAdapter.add(new ListRow(header, listRowAdapter));
|
||||||
}
|
}
|
||||||
@@ -80,12 +84,19 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm
|
|||||||
loadRows();
|
loadRows();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private final class ItemClickedListener implements OnItemClickedListener {
|
|
||||||
public void onItemClicked(Object item, Row row) {
|
private final class ItemViewClickedListener implements OnItemViewClickedListener {
|
||||||
// TODO: use a fragment transaction instead of launching a new
|
@Override
|
||||||
// activity
|
public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
|
||||||
|
RowPresenter.ViewHolder rowViewHolder, Row row) {
|
||||||
Intent intent = new Intent(getActivity(), DetailsActivity.class);
|
Intent intent = new Intent(getActivity(), DetailsActivity.class);
|
||||||
startActivity(intent);
|
intent.putExtra(DetailsActivity.EXTRA_ITEM, (PhotoItem) item);
|
||||||
|
|
||||||
|
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
|
||||||
|
getActivity(),
|
||||||
|
((ImageCardView)itemViewHolder.view).getMainImageView(),
|
||||||
|
DetailsActivity.SHARED_ELEMENT_NAME).toBundle();
|
||||||
|
getActivity().startActivity(intent, bundle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user