"고정 탭 + 스 와이프"모델을 사용하는 안드로이드 애플리케이션 내에서 액티비티를 개발 중입니다. 이 활동의 각 '탭'은 다른 유형의 연락처 정보를 저장하는 데 사용됩니다. 첫 번째 상점 이름, 성별, 모바일, 생년월일 등. 다음 탭에는 주소 정보가 저장되고 다음 탭에는 다른 정보가 저장됩니다.액티비티를 시작할 수 없습니다 : 널 포인터 예외
그래서 첫 번째 탭에서 나는 그 사람의 제목 (Mr/Ms/Mrs 등)을 선택하기위한 '드롭 다운 메뉴'와 같이 작동하는 회 전자를 원했습니다. 그래서 다음과 같이 정의 내 strings.xml
의 문자열 배열을 가지고 : 나는 코드에서 스피너를 채우기 위해 노력하고 내가 선 titleSpinner.setAdapter(adapter);
에 널 포인터 예외를 얻고있다 그러나
<string-array name="titles">
<item>"Mr."</item>
<item>"Miss"</item>
<item>"Ms."</item>
<item>"Mrs."</item>
<item>"Dr."</item>
</string-array>
. 그것에 회 전자와 -
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/androidbg_dark"
tools:context=".ModifyCustActivity" />
을 그리고 여기에 조각 중 하나 (문제의 하나의 XML 파일 :이 활동에 대한 XML이
public class ModifyCustActivity extends FragmentActivity implements
ActionBar.TabListener {
private static final int NUM_PAGES = 2;
private static final int DATE_DIALOG = 0;
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_modify_cust);
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
setupTitleSpinner();
}
private void setupTitleSpinner() {
Spinner titleSpinner = (Spinner) findViewById(R.id.spnTitle);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.titles, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
titleSpinner.setAdapter(adapter); // EXCEPTION OCCURS HERE
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.modify_cust, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onTabSelected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new DummySectionFragment();
switch (position) {
case 0:
return fragment = new FragmentCustBasic();
case 1:
return fragment = new FragmentCustAddress();
default:
break;
}
return fragment;
}
@Override
public int getCount() {
return NUM_PAGES;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Basic";
case 1:
return "Address";
}
return null;
}
}
public static class FragmentCustBasic extends Fragment {
public static final String ARG_SECTION_NUMBER = "section_number";
public FragmentCustBasic() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_modify_cust_basic, container, false);
return rootView;
}
}
public static class FragmentCustAddress extends Fragment {
public static final String ARG_SECTION_NUMBER = "section_number";
public FragmentCustAddress() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_modify_cust_address, container, false);
return rootView;
}
}
public static class DummySectionFragment extends Fragment {
public static final String ARG_SECTION_NUMBER = "section_number";
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_modify_cust_basic, container, false);
return rootView;
}
}
}
입니다 : 이것은 내 활동 코드) :
08-01 11:33:02.445: E/AndroidRuntime(10461): FATAL EXCEPTION: main
08-01 11:33:02.445: E/AndroidRuntime(10461): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.ModifyCustActivity}: java.lang.NullPointerException
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.ActivityThread.access$700(ActivityThread.java:140)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.os.Handler.dispatchMessage(Handler.java:99)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.os.Looper.loop(Looper.java:137)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.ActivityThread.main(ActivityThread.java:4921)
08-01 11:33:02.445: E/AndroidRuntime(10461): at java.lang.reflect.Method.invokeNative(Native Method)
08-01 11:33:02.445: E/AndroidRuntime(10461): at java.lang.reflect.Method.invoke(Method.java:511)
08-01 11:33:02.445: E/AndroidRuntime(10461): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
08-01 11:33:02.445: E/AndroidRuntime(10461): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
08-01 11:33:02.445: E/AndroidRuntime(10461): at dalvik.system.NativeStart.main(Native Method)
08-01 11:33:02.445: E/AndroidRuntime(10461): Caused by: java.lang.NullPointerException
08-01 11:33:02.445: E/AndroidRuntime(10461): at com.example.myapp.ModifyCustActivity.setupTitleSpinner(ModifyCustActivity.java:102)
08-01 11:33:02.445: E/AndroidRuntime(10461): at com.example.myapp.ModifyCustActivity.onCreate(ModifyCustActivity.java:93)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.Activity.performCreate(Activity.java:5206)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
08-01 11:33:02.445: E/AndroidRuntime(10461): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
08-01 11:33:02.445: E/AndroidRuntime(10461): ... 11 more
:
여기
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ModifyCustActivity$DummySectionFragment" >
<EditText
android:id="@+id/txtFirstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:ems="10"
android:hint="@string/fname"
android:inputType="textPersonName|textCapWords"
android:textColor="#FFFFFF" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/txtLastName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txtFirstName"
android:ems="10"
android:hint="@string/lname"
android:inputType="textPersonName|textCapWords"
android:textColor="#FFFFFF" >
</EditText>
<EditText
android:id="@+id/txtMobileNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txtLastName"
android:ems="10"
android:hint="@string/mobile"
android:inputType="phone"
android:textColor="#FFFFFF" />
<EditText
android:id="@+id/txtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txtMobileNumber"
android:ems="10"
android:hint="@string/dob"
android:inputType="date"
android:textColor="#FFFFFF" />
<Spinner
android:id="@+id/spnTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txtDate"
android:textColor="#FFFFFF" />
</RelativeLayout>
내 로그 캣의 출력
나는 android development를 처음 사용합니다.
102 행의 ModifyCustActivity.java에는 무엇이 있습니까? –
menifest.xml이 FragmentActivity가 등록되어 있는지 확인하십시오. – Pradeep
@MocialovBoris'titleSpinner.setAdapter (adapter); // 예외는 여기에 있습니다 ' –