- Forum posts: 1
Mar 13, 2017, 8:22:16 AM via Website
Mar 13, 2017 8:22:16 AM via Website
Hi guys.
I'm struggling with my question on treehouse.Here is the question:
"I created a new fragment to store our news items. It's called NewsItemFragment.java. When I went to add a constructor to pass in the selected index, Android Studio told me that I shouldn't do that.
Can you please help me by using a bundle to pass the index to my new NewsItemFragment when it is selected? (I added a constant key for the index in NewsItemFragment.java "
and this is the code is like:
MainActivity.java
public class MainActivity extends AppCompatActivity implements NewsFragment.NewsListener {
// New tags for referring to fragments
public static final String NEWS_FRAGMENT = "news_fragment";
public static final String NEWSITEM_FRAGMENT = "newsitem_fragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getFragmentManager();
NewsFragment savedFragment = (NewsFragment) fragmentManager.findFragmentById(R.id.placeholder);
if (savedFragment == null) {
NewsFragment newsFragment = new NewsFragment();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.placeholder, newsFragment);
fragmentTransaction.commit();
}
}
@Override
public void onNewsItemSelected(int index) {
NewsItemFragment fragment = new NewsItemFragment();
// TODO: how do we pass arguments to the new Fragment?
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.placeholder, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
}
NewsItemFragment.java
public class NewsItemFragment extends Fragment {
public static final String KEY_NEWS_ITEM_INDEX = "news_item_index";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TODO: Hmmm, how do we get this index?
int index = 0;
getActivity().setTitle(News.headlines[index]);
View view = inflater.inflate(R.layout.fragment_newsitem, container, false);
return view;
Fragment fragment = new Fragment(); // replace your custom fragment class
Bundle bundle = new Bundle();
bundle.putInt("index", index); // use as per your need
fragment.setArguments(bundle);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(index,fragment);
fragmentTransaction.commit();
}
@Override
public void onStop() {
super.onStop();
getActivity().setTitle(getResources().getString(R.string.app_name));
}
}
News.java
public class News {
public static String[] headlines = new String[]{
"Treehouse student develops #1 App in Google App Store",
"Oracle and Google decide to hug it out",
"Java8 coming to Android! Is it too late?"
};
}
Please Help!
Recommended editorial content
With your consent, external content is loaded here.
By clicking on the button above, you agree that external content may be displayed to you. Personal data may be transmitted to third-party providers in the process. You can find more information about this in our Privacy Policy.