활동의 일부 문자열 데이터를 다른 활동의 특정 프래그먼트로 보내려고합니다. 필자는 데이터를 보내고 AddNew.class라는 뷰 페이지에 두 개의 조각이있는 활동을 되살리는 MainAcitivity라는 액티비티를 사용했습니다. AddExpense와 두 번째 AddLedger라는 이름의 조각입니다. 이제 AddLedger 프래그먼트가 아닌 AddExpense 단편에서 데이터를 수신하려고합니다. 어떻게하면 돼? 나는 버튼을 클릭하여이 코드에 의해 데이터를 전송했습니다 ,활동에서 다른 활동의 특정 프래그먼트로 데이터를 보내는 방법
MainActivity 받기
Intent intent = new Intent(MainActivity.this, AddNew.class);
intent.putExtra("edit_expense", "zohaib");
startActivity(intent);
활동
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_new);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("Add Expense"));
tabLayout.addTab(tabLayout.newTab().setText("Add Ledger"));
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager2);
final TabAdapter adapter = new TabAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener (new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
난 단지 데이터를 회복 할에서 조각 그러나 나는했습니다 두 조각은 다른 쪽에서 데이터를 받기를 원하지 않습니다. 수신 조각 : AddNew acitivty가 토스트를 만들어
public class AddExpenseFragment extends Fragment implements AdapterView.OnItemSelectedListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.add_expense, container, false);
AddNew activity = (AddNew) getActivity();
Utility.shortToast(getActivity(), activity.getIntent().getExtras().getString("edit_expense"));
return view;
}
위의 코드에서 문제는, 표시 중 AddExpenseFragment 선택 여부를하지만 난이 원하지 않는다. 나는 그 부분에서받은 데이터를 받고 싶습니다. 이 문제를 친절히 해결하십시오.
인터페이스로 할 수 있습니다. – HaroldSer
공유 환경 설정 사용! 파편의 흐름을 제어하는 두통이 없습니다. – Radhey
최상의 솔루션은 EVENT BUS를 구현하는 것입니다. 그게 당신에게 조각과 활동 사이의 데이터 전달의 자유를 제공합니다 –