Android 용 앱을 디자인 중이며 탭 인터페이스 (3 탭, 탭 당 하나의 조각)를 사용하는 특정 활동이 있습니다. 여태까지는 그런대로 잘됐다.보이지 않는 탭에서보기를 얻으려면 어떻게해야합니까?
문제는 사용자가 탭에 필요한 모든 정보를 입력하고 버튼을 누르면 모든 정보를 검색해야한다는 것입니다. 그러나 getViewById
을 호출하여 표시되지 않는 탭 중 하나에있는보기를 가져 오면 NULL
을 반환합니다.
나는 탭 인터페이스를 설명하는 몇 가지 자습서와 SO 스레드를 읽었지만 그 중 아무도 작동 예제를 제공하지 않았습니다. 그들은 모두 빈 탭을 만들었습니다.
어떻게해야합니까?
편집 : 각 .tml마다 하나씩 3 개의 .xml 파일이 있습니다. 이 탭을 처리하는 활동의 관련 코드입니다 :
그래서public class SetupActivity extends FragmentActivity implements ActionBar.TabListener {
ActionBar actionBar;
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup);
// Set up the action bar.
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Set up the ViewPager with the sections adapter.
viewPager = (ViewPager) findViewById(R.id.pager);
FragmentManager fm = getSupportFragmentManager();
/** Defining a listener for pageChange */
ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
actionBar.setSelectedNavigationItem(position);
}
};
/** Setting the pageChange listner to the viewPager */
viewPager.setOnPageChangeListener(pageChangeListener);
/** Creating an instance of FragmentPagerAdapter */
MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm);
viewPager.setAdapter(fragmentPagerAdapter);
actionBar.setDisplayShowTitleEnabled(true);
/** Defining tab listener */
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabReselected(Tab arg0, android.app.FragmentTransaction arg1) {
}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
}
};
/** Creating Android Tab */
Tab tab = actionBar.newTab().setText("Partido").setTabListener(tabListener);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("Equipo").setTabListener(tabListener);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("Alineación").setTabListener(tabListener);
actionBar.addTab(tab);
}
/**
* This method is invoked when the user presses a button on tab number 3
*/
private void checkTeam() throws MatchNotReadyException {
EditText teamName = (EditText) findViewById(R.id.editTeamName); // this EditText is in tab number 1
String name = teamName.getText().toString(); // I get a NullPointerException here
if(name == null || name.isEmpty()) {
throw new MatchNotReadyException();
}
//some more actions
}
, 내가 대신 null
의, EditText
에 유효한 참조를 얻으려면 어떻게해야합니까?
탭을 작성하는 방법과 조각을 사용하는 방법을 보여주는 코드 스 니펫을 게시하십시오. – AndroidEnthusiast
좋아, 문제를 더 잘 설명 할 수있는 몇 가지 코드를 추가했습니다. 지연 돼서 죄송합니다. – ilvidel