我想要做的事:參考的EditText在ViewPager創建空指針異常
有3個不同的片段用戶輸入數據,然後在第4段的用戶將審查所有的數據輸入到第一在提交到數據庫之前有3個片段。
我遇到的問題:
每次我試圖設置或從EditText上的獲得方法創建一個NullPointerException
我的問題:
對於我」 m試圖做什麼,從一個片段調用EditText的文本值的正確方法是什麼,並且在頁面更改的任何時候將該文本設置在另一個片段的EditText中?
注:
我已經簡化了代碼下降到僅反映便於複製和便於解剖代碼的每個片段一個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);
}
}
}
}
當我嘗試引用EditText進行更改時,這給了我一個錯誤。 – Jim