正如標題所說,我需要獲取包含在片段活動中的editText的值,它是ViewPager的一部分;到目前爲止,我已經嘗試了所有的東西,並且我已經理解,只需通過在將它放大後傳遞活動的當前視圖即可訪問xml項目,這就是我所做的。但是,我需要包含值在用戶填充後的edittexts中,特別是在按下'save'按鈕之後;在程序執行期間,當我嘗試獲取包含文本時出現此錯誤:「java.lang.NullPointerException:試圖調用虛擬方法'android.text.Editable android.widget.EditText.getText()'on空對象引用」 對不起,愚蠢的問題,我是新來的Android編程,我感謝所有幫助我能 這裏的片段活動代碼:在onCreateView方法之外使用片段活動中的Edittext
public class Monday extends android.support.v4.app.Fragment{
EditText[] subjects = new EditText[6];
EditText[] classes = new EditText[6];
private OnFragmentInteractionListener mListener;
public Monday() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
ScrollView scrollView = (ScrollView)inflater.inflate(R.layout.fragment_monday, container, false);
//some code
subjects[0] = (EditText) scrollView.findViewById(R.id.editTextMateria1);
subjects[1] = (EditText) scrollView.findViewById(R.id.editTextMateria2);
subjects[2] = (EditText) scrollView.findViewById(R.id.editTextMateria3);
subjects[3] = (EditText) scrollView.findViewById(R.id.editTextMateria4);
subjects[4] = (EditText) scrollView.findViewById(R.id.editTextMateria5);
subjects[5] = (EditText) scrollView.findViewById(R.id.editTextMateria6);
classes[0] = (EditText) scrollView.findViewById(R.id.editTextClasse1);
classes[1] = (EditText) scrollView.findViewById(R.id.editTextClasse2);
classes[2] = (EditText) scrollView.findViewById(R.id.editTextClasse3);
classes[3] = (EditText) scrollView.findViewById(R.id.editTextClasse4);
classes[4] = (EditText) scrollView.findViewById(R.id.editTextClasse5);
classes[5] = (EditText) scrollView.findViewById(R.id.editTextClasse6);
return scrollView;
//return inflater.inflate(R.layout.fragment_monday, container, false);
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
public void onFragmentInteraction(Uri uri);
}
public String[] calculateDay(){
String s = "";
for(int i=1;i<subjects.length;i++){
s += subjects[i].getText().toString()+"-"+classes[i].getText().toString()+";";
}
String[] monday = new String[6];
monday = s.split(";");
return monday;
}
}
這就是一部分生成錯誤:
s += subjects[i].getText().toString()+"-"+classes[i].getText().toString()+";";
下面是產生ViewPager(在其上按鈕按下保存被處理)的「mainactivity」的代碼:
public class CustomTimetables extends FragmentActivity implements NoticeDialogFragment.NoticeDialogListener{
public static String classname = "";
ViewPager viewPager = null;
private MyAdapter2 mAdapter;
ViewPager Tab;
MyAdapter2 TabAdapter;
ActionBar actionBar;
PagerSlidingTabStrip tabs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_custom_timetables);
tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
Tab = (ViewPager) findViewById(R.id.pager);
TabAdapter = new MyAdapter2(getSupportFragmentManager());
Tab.setAdapter(TabAdapter);
tabs.setViewPager(Tab);
Toast.makeText( getApplicationContext(),
"Inserisci l'orario nelle caselle, lasciale vuote se le lezioni terminano prima ",
Toast.LENGTH_LONG
).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_custom_timetables, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void onSaveTimetable(View v){
DialogFragment dialog = new NoticeDialogFragment();
dialog.show(this.getSupportFragmentManager(), "insert_class");
}
public void onDialogPositiveClick(DialogFragment dialog) {
String timetable = "Orario;Lunedi;Martedi;Mercoledi;Giovedi;Venerdi;Sabato;\n08:00;";
String[] monday = new String[6];
Monday m = new Monday();
monday = m.calculateDay();
for(int i = 0; i<6; i++){
timetable += monday[i]+";";
switch(i){
case 0: timetable +="\n";break;
case 1 : timetable +="\n09:00;";break;
case 2 : timetable +="\n10:00;";break;
case 3 : timetable +="\n11:05;";break;
case 4 : timetable +="\n12:00;";break;
case 5 : timetable +="\n12:50;";break;
}
}
}
@Override
public void onDialogNegativeClick(DialogFragment dialog) {
}
}
class MyAdapter2 extends FragmentStatePagerAdapter
{
public MyAdapter2(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
if(i==0){
fragment = new Monday();
}
if(i==1){
fragment = new Tuesday();
}
if(i==2){
fragment = new Wednesday();
}
if(i==3){
fragment = new Thursday();
}
if(i==4){
fragment = new Friday();
}
if(i==5){
fragment = new Saturday();
}
return fragment;
}
@Override
public int getCount() {
return 6;
}
@Override
public CharSequence getPageTitle(int position) {
if(position == 0){
return "Lunedi";
}
if(position == 1){
return "Martedi";
}
if(position == 2){
return "Mercoledi";
}
if(position == 3){
return "Giovedi";
}
if(position == 4){
return "Venerdi";
}
if(position == 5){
return "Sabato";
}
return null;
}
}
這裏的logcat的:
06-09 19:29:16.172 24414-24443/com.progettostage.nick__000.timetablesapp D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true
06-09 19:29:16.187 24414-24414/com.progettostage.nick__000.timetablesapp D/Atlas﹕ Validating map...
06-09 19:29:16.250 24414-24443/com.progettostage.nick__000.timetablesapp I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 01/15/15, ab0075f, Id3510ff6dc
06-09 19:29:16.252 24414-24443/com.progettostage.nick__000.timetablesapp I/OpenGLRenderer﹕ Initialized EGL, version 1.4
06-09 19:29:16.290 24414-24443/com.progettostage.nick__000.timetablesapp D/OpenGLRenderer﹕ Enabling debug mode 0
06-09 19:32:20.725 24414-24443/com.progettostage.nick__000.timetablesapp V/RenderScript﹕ Application requested CPU execution
06-09 19:32:20.738 24414-24443/com.progettostage.nick__000.timetablesapp V/RenderScript﹕ 0xb83ba0b8 Launching thread(s), CPUs 4
06-09 19:32:38.415 24414-24414/com.progettostage.nick__000.timetablesapp D/AndroidRuntime﹕ Shutting down VM
06-09 19:32:38.422 24414-24414/com.progettostage.nick__000.timetablesapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.progettostage.nick__000.timetablesapp, PID: 24414
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at com.progettostage.nick__000.timetablesapp.Monday.calculateDay(Monday.java:111)
at com.progettostage.nick__000.timetablesapp.CustomTimetables.onDialogPositiveClick(CustomTimetables.java:111)
at com.progettostage.nick__000.timetablesapp.NoticeDialogFragment$2.onClick(NoticeDialogFragment.java:33)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
而這僅僅是類處理對話框,我不認爲這有什麼關係,但有備無患..
public class NoticeDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.dialog_classinput, null);
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(view)
// Add action buttons
.setTitle("Inserisci nome classe")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
EditText et = (EditText)view.findViewById(R.id.classname22);
CustomTimetables.classname = et.getText().toString();
// Send the positive button event back to the host activity
mListener.onDialogPositiveClick(NoticeDialogFragment.this);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
return builder.create();
}
public interface NoticeDialogListener {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
NoticeDialogListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// Verify that the host activity implements the callback interface
try {
// Instantiate the NoticeDialogListener so we can send events to the host
mListener = (NoticeDialogListener) activity;
} catch (ClassCastException e) {
// The activity doesn't implement the interface, throw exception
throw new ClassCastException(activity.toString()
+ " must implement NoticeDialogListener");
}
}
}
這裏的Monday.xml以及(只好剪掉了一些地方到底CAU本質上它是太長,但其實很簡單,它繼續這樣下去直到editTextMateria6和editTextClasse6):
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".Monday"
>
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="58dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="8:00-9:00"
android:id="@+id/PrimaOra"
android:textSize="25dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Materia"
android:id="@+id/materia1"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="115dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editTextMateria1"
android:layout_marginTop="160dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Classe"
android:id="@+id/classe1"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="225dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextClasse1"
android:layout_marginTop="270dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
-----------------------------------------------------
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="58dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="9:00-10:00"
android:id="@+id/SecondaOra"
android:textSize="25dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="325dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Materia"
android:id="@+id/materia2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="390dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextMateria2"
android:layout_marginTop="435dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Classe"
android:id="@+id/classe2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="500dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextClasse2"
android:layout_marginTop="545dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
-----------------------------------------
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="58dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="10:00-10:50"
android:id="@+id/TerzaOra"
android:textSize="25dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="600dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Materia"
android:id="@+id/materia3"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="665dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextMateria3"
android:layout_marginTop="710dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Classe"
android:id="@+id/classe3"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="775dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextClasse3"
android:layout_marginTop="825dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
-----------------------------------------
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="58dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="11:05-12:00"
android:id="@+id/QuartaOra"
android:textSize="25dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="875dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Materia"
android:id="@+id/materia4"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="940dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextMateria4"
android:layout_marginTop="985dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Classe"
android:id="@+id/classe4"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="1050dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextClasse4"
android:layout_marginTop="1095dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
------------------------------------------------
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="58dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="12:00-12:50"
android:id="@+id/QuintaOra"
android:textSize="25dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="1150dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Materia"
android:id="@+id/materia5"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="1215dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextMateria5"
android:layout_marginTop="1260dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Classe"
android:id="@+id/classe5"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="1325dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text=""
android:ems="10"
android:id="@+id/editTextClasse5"
android:layout_marginTop="1380dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
----------------------------------------------
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="58dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="12:50-13:40"
android:id="@+id/SestaOra"
android:textSize="25dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="1435dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Materia"
android:id="@+id/materia6"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="1500dp" />
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:width="400dp"
android:height="70dp"
android:onClick="onSaveTimetable"
android:text="Salva"
android:layout_marginTop="1700dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
</ScrollView>
UPDATE 好吧,我已經添加了幾行,所以也許這是更清楚是什麼問題..
String sub1 = subjects[0].getText().toString();
String classr1 = classes[0].getText().toString();
for(int i=0;i<subjects.length;i++){
s += subjects[i].getText().toString()+"-"+classes[i].getText().toString()+";";
}
如果我將它設置這樣的,我得到同樣的確切的錯誤就在SUB1線,因爲在這樣一個方法,我不能夠通過視圖或膨脹,正如我做oncreateview,它工作得很好,無論我做什麼操作..問題是我需要這些edittext後,用戶有pu t裏面有些東西..我希望我已經更清楚一點,我感謝所有我仍然得到的幫助,我想指出,我已經嘗試過每一個解決方案,即使我沒有,回覆這封他們都
也許爲了完整性發布您的XML爲R.layout.fragment_monday。 –
但是,錯誤是當您的EditText對象被引用爲空時得到的錯誤,因此您要求它的位置(週一類內部,未張貼我看不到),您可能引用了一個變量或者沒有用你認爲是的值填充的數組。 –
我已添加星期一佈局,星期一班是我發佈的第一個班級 – D4nt3