У меня есть две деятельности. Один из них - нормальная активность, которая содержит listview, а вторая - Tabbed Layout, у которой есть две вкладки. Один - вкладка «Описание», а другая - вкладка «Образец кода».Передача данных из фрагмента фрагмента с вкладкой в вкладку?
Я создал для вас два отдельных фрагмента, а именно «OneFragment» и «TwoFragment». Все, что мне нужно, - это когда пользователь нажимает элемент из моей обычной деятельности, этот элемент будет храниться в строке, и эта строка должна быть передана в макет с вкладками, и ее следует показать в OneFragment, т. Е. Вкладку «Описание»
(Ex). Мой список содержит {"Android", "Studio"}, если пользователь нажимает на Android, этот текст должен перейти на вкладку описания и отобразить текст с помощью TextView. пожалуйста помогите. Здесь я включать свои соответствующие коды ..
NormalActivity -> ListActi.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
lv = (ListView) findViewById(R.id.listView);
final List<String> ListElementsArrayList = new ArrayList<String>(Arrays.asList(listElements));
final ArrayAdapter<String> adapter = new ArrayAdapter<String>
(getApplicationContext(), android.R.layout.simple_list_item_1, ListElementsArrayList);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Toast.makeText(getApplicationContext(), listElements[position],Toast.LENGTH_LONG).show();
s = listElements[position];
if(position == 1){
s = listElements[position];
Bundle bundle = new Bundle();
bundle.putString("ClickedItem", listElements[position]);
OneFragment fragobj = new OneFragment();
TwoFragment fag = new TwoFragment();
fragobj.setArguments(bundle);
fag.setArguments(bundle);
Intent i = new Intent(getApplicationContext(),BothLay.class);
startActivity(i);
}
}
});
}
}
TabActivity -> BothLay
public class BothLay extends AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_both_lay);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new OneFragment(), "Description");
adapter.addFragment(new TwoFragment(), "Sample Code");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount(){
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
Вкладка Decription -> OneFragment (Все, что я необходимо передать данные из обычной активности в этот фрагмент)
public class OneFragment extends Fragment{
String strtext = "Ajay";
public OneFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootview = inflater.inflate(R.layout.fragment_one, container, false);
TextView textView = (TextView) rootview.findViewById(R.id.t1);
//strtext = getIntent().getStringExtra("ClickedItem"); //this doesn't work
textView.setText(strtext);
return rootview;
}
}
Пример вкладки Код -> Twofragment
public class TwoFragment extends Fragment{
public TwoFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_two, container, false);
}
}
проверить мой ответ http://stackoverflow.com/questions/12739909/send-data-from-activity-to-fragment-in-android/38741476#38741476 – Noorul
Нужна помощь, спросите меня. – Noorul
@ Er Ajay Jayendran Сначала, чтобы закончить предложение, вам понадобится только одна полная остановка. Когда вы отправляете вопрос о формате, а также, когда он очень грязный, люди не будут читать его даже –