Je suis un débutant qui fait suite à un androïde book.now j'ai une application de test de problème.Le est une application de nouvelles et ont un code comme ceci:Comment puis-je changer le code android pour le faire fonctionner à nouveau?
public class NewsTitleFragment extends Fragment implements OnItemClickListener {
private ListView newsTitleListView;
private List<News> newsList;
private NewsAdapter adapter;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
newsList = getNews();
adapter = new NewsAdapter((Activity)activity, R.layout.news_item, newsList);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater
.inflate(R.layout.news_title_frag, container, false);
newsTitleListView = (ListView) view
.findViewById(R.id.news_title_list_view);
newsTitleListView.setAdapter(adapter);
newsTitleListView.setOnItemClickListener(this);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (getActivity().findViewById(R.id.news_content_layout) != null) {
isTwoPane = true;
} else {
isTwoPane = false;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
News news = newsList.get(position);
if (isTwoPane) {
NewsContentFragment newsContentFragment = (NewsContentFragment) getFragmentManager()
.findFragmentById(R.id.news_content_fragment);
newsContentFragment.refresh(news.getTitle(), news.getContent());
} else {
NewsContentActivity.actionStart(getActivity(), news.getTitle(),
news.getContent());
}
}
private List<News> getNews() {
List<News> newsList = new ArrayList<News>();
News news1 = new News();
news1.setTitle("It's news 1");
news1.setContent("It's news 1 content");
newsList.add(news1);
News news2 = new News();
news2.setTitle("It's news 2");
news2.setContent("It's news 2 content");
newsList.add(news2);
return newsList;
}
}
mais dans la nouvelle API Android, le code
public void onAttach(Activity activity)
doit changer pour
public void onAttach(Context context)
je change, mais l'application montre quoi que ce soit après le changement! Je veux savoir pourquoi je me trompe et comment le modifier. Merci beaucoup. PSThe classe NewsAdapter étend ArrayAdapter.The classe Nouvelles n'a que deux cordes La méthode NewsAdapter est:
public class NewsAdapter extends ArrayAdapter<News> {
private int resourceId;
public NewsAdapter(Context context, int textViewResourceId, List<News> objects) {
super(context, textViewResourceId, objects);
resourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
News news = getItem(position);
View view;
if (convertView == null) {
view = LayoutInflater.from(getContext()).inflate(resourceId, null);
} else {
view = convertView;
}
TextView newsTitleText = (TextView) view.findViewById(R.id.news_title);
newsTitleText.setText(news.getTitle());
return view;
}
}
Votre fragment n'a pas de méthode onCreateView. Donc il est vide –
Il a déjà une méthode onCreateView.before le changement de l'application montre la liste des nouvelles, mais quand je le change en "Contexte" les applications ne montre rien – cramile
Nous aimerions que vous montriez un [mcve], afin que nous puissions vérifier la problème. En d'autres termes, s'il vous plaît [edit] pour montrer cette méthode –