我在使用填充了兩個Fragments
的ViewPager
的活動時遇到問題。在我的項目中,我有一個活動RegisterActivity.java和兩個片段:FirstFragment.java和SecondFragment.java。當創建活動,這兩個片段被加載:Android - ViewPager導致addTextChangeListener出現問題
public class RegisterActivity extends FragmentActivity {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
EditText firstName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
firstName = (EditText) findViewById(R.id.edit_text_register_first_name);
firstName.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) { }
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// Do something...
}
});
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
FirstFragment firstFragment = new FirstFragment();
return firstFragment;
case 1:
SecondFragment secondFragment = new SecondFragment();
return secondFragment;
}
return null;
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
...
}
}
}
以下代碼是在FirstFragment.java發現:
public class FirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View firstInterface = inflater.inflate(R.layout.fragment_first, container, false);
return firstInterface;
}
}
和SecondFragment.java:
public class SecondFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View secondInterface = inflater.inflate(R.layout.fragment_second, container, false);
return secondInterface;
}
}
我可以向你保證,所有進口產品都按要求提供。當我運行該應用程序時,我在第41行獲得NullPointerException
,這是聲明addTextChangedListener
的地方。從我讀過的內容來看,我對錯誤發生原因的猜測是因爲edit_dext_register_first_name
不是setContentView(R.layout.activity_register);
中使用的佈局的一部分。儘管它是其中一個片段的佈局的一部分,但應用程序不知道在哪裏尋找我的EditText
,因此NullPointerException
。但我可能是錯的。
我很努力地看到我如何解決這個問題,所以任何建議將不勝感激。
謝謝!
如果我在'return firstInterface;'之前添加'EditText firstName =(EditText)findViewById(R.id.edit_text_register_first_name)'''它不會將'findViewById()'識別爲方法。 – Drider 2013-03-25 00:32:12
它需要是firstInterface.findViewById(...) – 2013-03-25 01:28:04
輝煌,它完美的工作!非常感謝你的幫助! – Drider 2013-03-25 11:01:23