私がやろうとしていること:
ユーザーに 3 つの異なるフラグメントにデータを入力してもらい、4 番目のフラグメントで、ユーザーはデータベースに送信する前に最初の 3 つのフラグメントに入力されたすべてのデータを確認します。
私が抱えている問題:
EditText から設定または取得しようとしたすべてのメソッドは、NullPointerException
私の質問:
私がやろうとしていることについて、あるフラグメントから EditText のテキスト値を呼び出し、ページが変更されるたびに別のフラグメントの EditText にそのテキストを設定する正しい方法は何ですか?
ノート:
複製を容易にし、コードを分析しやすくするために、各フラグメントに 1 つの EditText のみを反映するようにコードを単純化しました。
コード:
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.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.EditText;
public class SwipeEnterResults extends FragmentActivity {
ResultsPagerAdapter mResultsPagerAdapter;
ViewPager mViewPager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.swipe_enter_results);
mResultsPagerAdapter = new ResultsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mResultsPagerAdapter);
}
public void onResume() {
super.onResume();
//Declare EditText(s)
final EditText txt1= (EditText) mViewPager.findViewById(R.id.txt1);
final EditText txt2= (EditText) mViewPager.findViewById(R.id.txt2);
final EditText txt3= (EditText) mViewPager.findViewById(R.id.txt3);
final EditText rvw1= (EditText) mViewPager.findViewById(R.id.rvw1);
final EditText rvw2= (EditText) mViewPager.findViewById(R.id.rvw2);
final EditText rvw3= (EditText) mViewPager.findViewById(R.id.rvw3);
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
rvw1.setText(txt1.getText().toString());
rvw2.setText(txt2.getText().toString());
rvw3.setText(txt3.getText().toString());
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) { }
@Override
public void onPageScrollStateChanged(int arg0) { }
});
}
public class ResultsPagerAdapter extends FragmentPagerAdapter{
public ResultsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment f = new Fragment();
switch (position) {
case 0:
f = new Swipe1();
break;
case 1:
f = new Swipe2();
break;
case 2:
f = new Swipe3();
break;
case 3:
f = new SwipeReviewResults();
break;
}
return f;
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.str1);
case 1:
return getString(R.string.str2);
case 2:
return getString(R.string.str3);
case 3:
return getString(R.string.strReview);
default:
return "Page " + (position + 1);
}
}
}
}