アクティビティから別のアクティビティの特定のフラグメントに文字列データを送信したいとします。私の場合は、データを送信し、AddNew.classという名前のビューページに2つのフラグメントを持つアクティビティを復活させるためのMainAcitivityという名前のアクティビティがあります。 AddExpenseと2番目の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) {
}
});
}
私はデータのみを復活させたいからフラグメントが、私はしました2つのフラグメントは他からデータを受信したくない。 受信フラグメント: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を実装することです。それによって、フラグメントとアクティビティの間でデータがやり取りされる自由が得られます。 –