comme le titre suggère. Ceci est le
J'ai téléchargé fragment code> code d'ici, http: // développeur.android.com/shareebles/training/fragmentbasics.zip .
C'est un exemple de fragment de Développeur officiel Android fort>. http://developer.android.com/training/basics/fragments/ Fragment-ui.html MainActivity.java code> 'S
Oncreate () Code>: P>
--------------------------------------
| MainActivity <-> HeadlinesFragment |
| | |
| |>> ArticlesFragment |
--------------------------------------
4 Réponses :
On dirait que vous insérez une paire de clé et de valeur dans votre paquet. Vous devez probablement faire référence à la valeur clé comme dans Selon les documents pour PortString: insère une valeur de chaîne dans la mappage de ce faisceau, remplaçant toute valeur existante pour la clé donnée. La clé ou la valeur peut être nulle. P>
paramètres
Touche une chaîne ou null
Valeur une chaîne ou null p> getarguments (). GetString (catégorie); code> p>
String Catégorie = getArguments (). GetString ("catégorie"); code> vous voulez dire? L'ont essayé. Il montre une erreur et le programme fermera. Vous pouvez aussi lire ce QA. Je prends l'exemple de code Toast à partir de là [fragment getarguments () renvoie null] ( Stackoverflow.com/Questtions/14970790/... )
Je l'ai résolu. On dirait que le seul moyen d'envoyer des données de MainActivity.java à headlinesfragment.java provient de rappels (si quelqu'un d'autre connaît d'autres moyens, veuillez contribuer, puis nous avons d'autres moyens à l'extérieur, aidant les autres personnes avec ce type de problème).
Le code principal de est MainActivity.java Fonction Qu'est-ce qui me confondre est Codes ci-dessous, alors tout le monde peut le comprendre. p> headlinesfragment.java strong>: p> Bundle public GetBundle () {} code>, puis définissez la section code> interface code> sur la têtelinesfragment.java et ajouter
public Bundle getBundle (); code> et dernier, appelez-le de la têteLinesfragment.java's
onecreate code>. P>
fragment.settarguments (getintent (). GetExtras ()); Code> sur MainActivity.java's
Oncreate code>. Ils ont mis ce code là-bas et je croyais que cela fonctionnera parce que cela vient de Guide de développeur officiel Android et API STRUT> http://developer.android.com/training/basics/fragments/fragment-ui.html , mais cela n'a pas fonctionné (maintenant je crois que le morceau de le code ne fera rien). Ainsi, quiconque lisait le tutoriel ou l'échantillon à partir de là, prenez-le avec un grain de sel! P>
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.fragments;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class HeadlinesFragment extends ListFragment {
OnHeadlineSelectedListener mCallback;
// The container Activity must implement this interface so the frag can deliver messages
public interface OnHeadlineSelectedListener {
/** Called by HeadlinesFragment when a list item is selected */
public void onArticleSelected(int position);
public Bundle getBundle();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = mCallback.getBundle();
Toast.makeText(getActivity(), "headline fragment " + bundle, Toast.LENGTH_LONG).show();
// We need to use a different list item layout for devices older than Honeycomb
int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
android.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;
// Create an array adapter for the list view, using the Ipsum headlines array
setListAdapter(new ArrayAdapter<String>(getActivity(), layout, Ipsum.Headlines));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
// When in two-pane layout, set the listview to highlight the selected list item
// (We do this during onStart because at the point the listview is available.)
if (getFragmentManager().findFragmentById(R.id.article_fragment) != null) {
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception.
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Notify the parent activity of selected item
mCallback.onArticleSelected(position);
// Set the item as checked to be highlighted when in two-pane layout
getListView().setItemChecked(position, true);
}
}
La méthode getarguments () code> ne sera pas
null code> si vous définissez les arguments. et je ne vous suggère pas d'utiliser le rappel code> pour obtenir le
Bundle code>.
@ TESLA1984: Veuillez lire ma question. Et le code. L'argument a été défini. Avez-vous essayé d'exécuter le code? Avec votre SETARGUMuments () CODE> et
GetArguments () CODE>? Au début, je pense que c'est comme ça, avec des getarguments (), mais j'avais tort. Oh, et si vous avez la solution qui fonctionne, veuillez le poster ci-dessous. Je vais accepter votre réponse si le code fonctionne et n'utilise pas de rappel.
@Tonny
J'ai téléchargé le fragmentbasics.zip. Je ne change que le nom de l'argument. Voici le code et la photo de résultat. P>
MainAlactivité strong> p> HeadLinesFragition strong> P> Voici le résultat strong> p> p> p>
Oui, on dirait que cela fonctionne lors de l'utilisation de la résolution <600px. S'il vous plaît essayez-le lorsque vous utilisez Nexus 7 Avd. Cause Bien sûr, nous voulons le même résultat lors de l'utilisation de la tablette ou du téléphone (> 600px et <600px). Merci
J'ai eu le même problème, mais j'ai résolu :) p>
Mon problème était que j'avais le J'ai supprimé le
J'ai vérifié le code et
getarguments () code> n'est pas null. Si le code ci-dessus est votre code actuel, je ne pense pas qu'il y a mal de mal. Sinon, vérifiez les variables?
@ TESLA1984: Sur quelle partie vous insérez votre code? dans les headlinesfragment.java ou ArméesFRAGMENT.JAVA? Parce que je place le
getarguments () code> dans headlinesfragment.java, je reçois null. Merci.
Parfois, mon éclipse + adt échoue! .. J'ai besoin de nettoyer le projet et le retour ..
@Thamegowda: Merci pour votre contribution. Je le rechargez plusieurs fois, avec le même résultat. Cependant, je n'ai pas essayé avec les autres Version Adt.
J'ai parfois vu que l'utilisation de clés comme "catégorie" dans l'intention des extras ne fonctionnent pas, alors que l'utilisation de clés du format " .Category" fonctionne. Cela ne se produit que sur quelques téléphones et dans quelques scénarios seulement.
J'ai eu le même problème. On dirait que lorsque le fragment est gonflé dans le XML, les getArguments () renvoie NULL. Cependant, lorsque le fragment est appelé à l'intérieur du code d'activité, les getArguments () dans le fragment ne sont pas nuls.
J'ai eu un problème similaire, s'avère que je remplace la méthode des setarguments () et ne définissant pas les arguments