Я пытаюсь получить выбранные значения первого и третьего экранов, которые будут использоваться в последнем четвертом экране. Как я могу получить доступ к радиогруппам предыдущих фрагментов?Соберите выбор RadioButton при создании последнего фрагмента
Я попытался сохранить выбранное значение в методе onPause для каждого фрагмента, но он вызывается при переходе от первого фрагмента к третьему фрагменту, а не от первого до второго.
Я попытался использовать прослушиватель для радиогруппы, но он никогда не вызывается.
Я попытался получить доступ к остальным трем фрагментам из финального фрагмента Циатисты, но без каких-либо успехов.
package com.tsiatistonmyfriend;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Locale;
import net.justanotherblog.swipeview.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class MainActivity extends FragmentActivity {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
public static String funnySerious;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the adapter that will return a fragment for each of the three
// primary sections of the app.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
OnClickListener listener = new OnClickListener()
{
@Override
public void onClick(View v)
{
RadioButton rb = (RadioButton) v;
funnySerious = (String) rb.getText();
}
};
/**
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position)
{
Fragment fragment = new FunnySerious();
switch (position)
{
case 0:
return fragment = new FunnySerious();
case 1:
return fragment = new MaleFemale();
case 2:
return fragment = new DirtyClean();
case 3:
return fragment = new Tsiatisto();
default:
break;
}
return fragment;
}
@Override
public int getCount() {
// Show 4 total pages.
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
case 2:
return getString(R.string.title_section3).toUpperCase(l);
case 3:
return getString(R.string.title_section4).toUpperCase(l);
}
return null;
}
}
public static class FunnySerious extends Fragment
{
View v;
public FunnySerious() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.funny_serious, container, false);
v = rootView;
return rootView;
}
}
public static class MaleFemale extends Fragment
{
public MaleFemale() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.male_female, container, false);
return rootView;
}
}
public static class DirtyClean extends Fragment
{
public DirtyClean() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.dirty_clean, container, false);
return rootView;
}
}
public static class Tsiatisto extends Fragment
{
public Tsiatisto() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//FunnySerious textFragment = (FunnySerious) this.getActivity().getSupportFragmentManager().findFragmentById(R.id.pager);
View rootView = inflater.inflate(R.layout.tsiatisto, container, false);
DataBaseHelper myDbHelper = new DataBaseHelper(this.getActivity().getApplicationContext());
try
{
myDbHelper.createDataBase();
myDbHelper.openDataBase();
}catch(IOException ioe)
{
throw new Error("Unable to create database");
}
final SQLiteDatabase db = myDbHelper.getDB();
Cursor cursor;
cursor = db.query("Tsiatista ORDER BY RANDOM() LIMIT 1", new String[] { "*" }, null, null, null, null, null);
//cursor = db.rawQuery("SELECT Verse FROM Tsiatista WHERE ID = 1", null);
if(cursor.moveToFirst())
{
String htr;
htr = (String) cursor.getString(cursor.getColumnIndex("Verse"));
EditText et = (EditText) rootView.findViewById(R.id.tsiatistoTxt);
et.setText(htr);
cursor.close();
}
return rootView;
}
}
}
Я получил доступ к радиобарабанам, добавив в аррайалисты виды, а затем получив их доступ к ним успешно. Вот использованный код: \t Просмотреть fs; \t RadioGroup rg; \t int selectedId; \t RadioButton rb; \t fs = (Вид) mViews.get (0); \t rg = (RadioGroup) fs.findViewById (R.id.radioGroupFS); \t selectedId = rg.getCheckedRadioButtonId(); \t rb = (RadioButton) fs.findViewById (selectedId); \t funnySerious = (String) rb.getText(); Однако проблема в том, что я не знаю, где разместить это, чтобы выполнить выполнение, когда последний фрагмент становится видимым. В любом месте, где я его размещаю, он выполняется преждевременно. – user3170