2016-05-03 21 views
1

Der Titel dieser Frage ist vage, weil ich nicht wirklich weiß, was passiert. Ich have Listenansicht innerhalb einer Klasse namens SummerJobFragment.java diese Listenansicht hat eine onItemClicked(), die angenommen wird, zu öffnen und andere Fragment namens SummerJobDetailsFragment.java. Unten habe ich den Code und den Logcat Screenshot gepostet.EditText innerhalb Fragment stürzt App Absturz

SummerJobFragment.java

public class SummerJobsFragmnet extends Fragment { 

public SummerJobsFragmnet() { 
    // Required empty public constructor 
} 

// TODO: Rename and change types and number of parameters 
public static Fragment getInstance() { 
    Fragment fragment = new SummerJobsFragmnet(); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 
public void showMessage (String title, String message) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setCancelable(true); 
    builder.setTitle(title); 
    builder.setMessage(message); 
    builder.show(); 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    final MainActivity activity = (MainActivity) getActivity(); 
    String [] places = activity.getAllPositionsNamesPhone().toArray(
      new String[activity.getAllPositionsNamesPhone().size()]); 

    final ListView list = (ListView) getView().findViewById(R.id.joblistView); 
    int prgmImages=R.mipmap.ic_launcher; 
    list.setAdapter(new CustomListAdapter(activity,places,prgmImages)); 
    // OnClick listner for the individual cells of the listView 
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      SummerJobDetailsFragment.mMyAppsBundle.putInt("value", position); 
      SummerJobDetailsFragment fragment = new SummerJobDetailsFragment(); 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.layout.displayjobs_detailed, fragment).commit(); 


     } 
    }); 
} 

SummerJobDetailsFragment.java

public class SummerJobDetailsFragment extends Fragment { 

    DataBaseHelper summerJobDB; 
    public static Bundle mMyAppsBundle = new Bundle(); 
    public int position = SummerJobDetailsFragment.mMyAppsBundle.getInt("value"); 


    public SummerJobDetailsFragment() { 
     // Required empty public constructor 
    } 

    public static Fragment getInstance() { 
     Fragment fragment = new SummerJobsFragmnet(); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.displayjobs_detailed,container,false); 
     super.onViewCreated(view, savedInstanceState); 
     SummerJobDetailsFragment summer = new SummerJobDetailsFragment(); 
     DataBaseHelper summerJobDB; 
     summerJobDB = new DataBaseHelper(getActivity()); 

     Cursor res = summerJobDB.getAllData(position+1); 
     EditText jobPlace = (EditText)view.findViewById(R.id.jobTitle); 
     jobPlace.setText(res.getString(1)); 
     /* 
     EditText jobPlace = (EditText)summer.getView().findViewById(R.id.jobTitle); 
     jobPlace.setText(res.getString(1)); 
     EditText jobPosition = (EditText)summer.getView().findViewById(R.id.jobPlace); 
     jobPlace.setText(res.getString(2)); 
     EditText starTime = (EditText)summer.getView().findViewById(R.id.jobStartingTime); 
     jobPlace.setText(res.getString(3)); 
     EditText address = (EditText)summer.getView().findViewById(R.id.jobAddress); 
     jobPlace.setText(res.getString(5)); 
     EditText phone = (EditText)summer.getView().findViewById(R.id.jobPhoneNum); 
     jobPlace.setText(res.getString(6)); 
     EditText hours = (EditText)summer.getView().findViewById(R.id.jobHours); 
     jobPlace.setText(res.getString(4)); 
     */ 
     return 

    } 

} 

und hier ist die displayjobs_detail.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/LinearLayout"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="@string/jobplace" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobPlace" 
     android:layout_gravity="center_horizontal" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Job Title" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobTitle" 
     android:layout_gravity="right" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Job Address:" 
     android:id="@+id/jobAddress" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobAddress" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Phone number:" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobPhoneNum" 
     android:layout_gravity="center_horizontal" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Hours" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobHours" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Starting Time" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobStartingTime" /> 

</LinearLayout> 

und hier ist die logcat: Second logcat error

enter image description here

+1

Mögliche Duplikat [Was ein Null-Zeiger-Ausnahme ist, und wie kann ich es beheben?] (Http://stackoverflow.com/questions/218384/ what-is-a-null-pointer-exception-and-how-do-i-fix-it) –

Antwort

0

allererst Sie die Layout-Operationen in onCreate tun, sollten Sie es in onCreateView tun() wie folgt aus:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

View rootView = inflater.inflate(R.layout.fragment_songs, container, false); 


EditText jobPlace = (EditText)rootView.findViewById(R.id.jobTitle); 
     jobPlace.setText(res.getString(1)); 

... 
... 
} 

entfernen Sie auch diese Aussage

SummerJobDetailsFragment summer = new SummerJobDetailsFragment(); 

es macht keinen Sinn, Sie rufen findViewById auf der rootView.

Nein, das ist, wie Sie es tun,

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/displayjobs_detailed" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/LinearLayout"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="@string/jobplace" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobPlace" 
     android:layout_gravity="center_horizontal" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Job Title" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobTitle" 
     android:layout_gravity="right" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Job Address:" 
     android:id="@+id/jobAddress" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobAddress" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Phone number:" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobPhoneNum" 
     android:layout_gravity="center_horizontal" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Hours" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobHours" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Starting Time" 
     android:id="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/jobStartingTime" /> 

</LinearLayout> 
</FrameLayout> 

Dann in Ihrem Fragment Verwendung dieses

zu begehen
fragmentManager.beginTransaction().replace(R.id.displayjobs_detailed, fragment).commit(); // Note R.id instead of R.layout 
+0

Ich habe getan, was Sie sagten, wenn das Layout in onCreateView setzen Ich bekomme einen Fehler, den ich hinzufügen werde – dadadodo

+0

Eigentlich hat Ihr Code viele Probleme, bitte posten Sie den Fehler !! – varunkr

+0

Ich habe gerade den neuen Logcat – dadadodo

0

initialisieren Ihre Ansicht Elemente in onCreateView des Fragment nicht in onCreate

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.your_layout, container, false); 
    // Initialize Here 
    return view; 
} 
0

Sie falsch anrufen. Difference between onCreateView and onViewCreated in Fragment

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 

statt, rufen

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.your_layout, container, false); 
    // Initialize Here 
    return view; 
} 
+0

Ich habe versucht, was Sie sagten, ich bekomme immer noch den gleichen Fehler.Der zweite Fehler logcat, die ich gepostet habe – dadadodo

+0

Da es keine Anzeige als displayjobs_detailed gibt, da Sie Layout namens displayjobs_detail – mubeen

+0

haben, änderte ich das immer noch das gleiche! – dadadodo