Ich habe ein benutzerdefiniertes Drehfeld mit einer ArrayList in einer Aktivität definiert. Bei ausgewählten Objekten wird ein neues Fragment erstellt. Kann ich den Wert des Fragments, das erstellt wurde ("Single Massage" oder "Couples Massage"), an ein anderes Fragment innerhalb der gleichen Aktivität weitergeben und dann von diesem Fragment an eine andere Aktivität weitergeben und seine Textansicht aktualisieren? Dies ist vielleicht nicht der beste Ansatz, aber ich bin ein Anfänger, also weiß ich wirklich nicht so viel. Hier ist mein Code.Übergeben von Drehfeldwert von Aktivität an Fragment
Spinner:
public class MassageActivity extends AppCompatActivity {
private Spinner mSpinner;
private Toolbar mToolbar;
private FragmentManager mFragmentManager;
private FragmentTransaction mFragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_massage);
mToolbar = (Toolbar) findViewById(R.id.toolbar_massage);
setSupportActionBar(mToolbar);
ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
if (ab != null) {
ab.setDisplayShowTitleEnabled(false);
}
customSpinner();
mFragmentManager = getSupportFragmentManager();
}private void customSpinner() {
final ArrayList<String> massageType = new ArrayList<>();
massageType.add("Single Massage");
massageType.add("Couples Massage");
massageType.add("Pamper Party");
mSpinner = (Spinner) findViewById(R.id.spinner);
CustomSpinnerAdapter spinnerAdapter = new CustomSpinnerAdapter(getApplicationContext(), massageType);
mSpinner.setAdapter(spinnerAdapter);
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (parent.getItemAtPosition(position).toString()
.equals("Pamper Party")) {
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.fragment_container_massage,
new PamperPartyFragment()).commit();
}
if (parent.getItemAtPosition(position).toString()
.equals("Single Massage")) {
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.fragment_container_massage,
new SingleMassageFragment()).commit();
}
if (parent.getItemAtPosition(position).toString()
.equals("Couples Massage")){
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.fragment_container_massage,
new CouplesMassageFragment()).commit();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}}
EDIT: folgte ich das und das getan:
String spinnerValue = mSpinner.getSelectedItem().toString();
Intent i = new Intent(this, SingleMassageFragment.class);
i.putExtra("spinnerValue", spinnerValue);
setIntent(i);
Und dann in meinem Fragment:
MassageActivity activity = (MassageActivity) getActivity();
Intent f = activity.getIntent();
String spinnerValue = f.getStringExtra("spinnerValue");
Utils.doToast(getContext(), spinnerValue);
Aber je nachdem, was Fragment wähle ich, ich Immer den gleichen Toast "Single Massage" bekommen. Warum das? Für jeden Fall hier ist mein Adapter:
public class CustomSpinnerAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<String> mMassageType;
private LayoutInflater mInflater;
private TextView tvSpinner;
public CustomSpinnerAdapter(Context context, ArrayList<String> massageType) {
mContext = context;
mMassageType = massageType;
mInflater = (LayoutInflater.from(context));
}
@Override
public int getCount() {
return mMassageType.size();
}
@Override
public Object getItem(int position) {
return mMassageType.get(position);
}
@Override
public long getItemId(int position) {
return (long) position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = mInflater.inflate(R.layout.spinner_layout, null);
tvSpinner = (TextView) convertView.findViewById(R.id.tvSpinner);
tvSpinner.setText(mMassageType.get(position));
return convertView;
}
}
Sie auch String/boolean usw. Datentyp –
Thank passieren können zu lesen du für deine Antwort! Ich möchte den Wert, der von den drei Fragmenten im Spinner ausgewählt wurde, an ein anderes Fragment übergeben, das sich von den drei oben unterscheidet. Ist das möglich? – jlively
@jlively Ja, Sie können Daten in einem anderen Fragment übergeben –