액티비티에 정의 된 ArrayList가있는 사용자 정의 스피너가 있습니다. 선택한 항목에서 새 단편이 작성됩니다. 내가 만든 단편 ("단일 마사지"또는 "커플 마사지")의 가치를 동일한 활동 내의 다른 단편으로 전달한 다음 그 단편에서 다른 활동으로 전달하고 텍스트보기를 업데이트 할 수 있습니까? 이것은 최선의 접근법이 아닐지 모르지만 나는 초보자이기 때문에 그다지 많이 알지 못합니다. 여기 내 코드가있다.액티비티에서 프래그먼트로 스피너 값 전달
는 회 전자 :
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) {
}
});
}}
는 편집 : 내가 선택한
MassageActivity activity = (MassageActivity) getActivity();
Intent f = activity.getIntent();
String spinnerValue = f.getStringExtra("spinnerValue");
Utils.doToast(getContext(), spinnerValue);
그러나 어느 조각 : 이 난을 따라 이런 짓을 : 내 조각에서 다음
String spinnerValue = mSpinner.getSelectedItem().toString();
Intent i = new Intent(this, SingleMassageFragment.class);
i.putExtra("spinnerValue", spinnerValue);
setIntent(i);
과 항상 동일한 토스트 "싱글 마사지"를 받으십시오. 왜 그런가요?
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;
}
}
또한 전달할 수 문자열/부울 등 데이터 유형 –
감사이 추가 읽을 수있는 데이터
을 보내 당신의 대답을 위해서! 3 개의 조각 중 하나가 스피너에서 선택된 값을 위의 3 가지와 다른 다른 조각으로 전달하고 싶습니다. 그게 가능하니? – jlively
@jlively 예 u 다른 조각으로 데이터를 전달할 수 있습니다 –