2016-05-03 3 views
1

Название этого вопроса неопределенное, потому что я действительно не знаю, что происходит. Я просматриваю список hava внутри класса с именем SummerJobFragment.java, этот вид списка имеет onItemClicked(), который предположительно открывается, а другой фрагмент - SummerJobDetailsFragment.java. Ниже я опубликовал код и скриншот logcat.Редактирование текста внутри фрагмента завершает сбой приложения

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 

    } 

} 

и вот 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> 

и вот LogCat: Second logcat error

enter image description here

+1

Возможный дубликат [Что является исключение нулевого указателя, и как это исправить?] (Http://stackoverflow.com/questions/218384/ what-is-a-null-pointer-exception-and-how-do-i-fix-it) –

ответ

0

Прежде всего вы делаете операции компоновки в OnCreate, вы должны сделать это в onCreateView(), как это:

@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)); 

... 
... 
} 

Также удалите это заявление

SummerJobDetailsFragment summer = new SummerJobDetailsFragment(); 

это не имеет никакого смысла, вы вызываете findViewById на rootView.

Нет, это то, как вы это делаете,

<?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> 

Затем в использовании фрагмента, чтобы это совершить

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

Я сделал то, что вы сказали, если поместить макет внутри onCreateView. Я получаю некоторую ошибку, которую я добавлю. – dadadodo

+0

На самом деле у вашего кода много проблемы, пожалуйста, отправьте сообщение об ошибке! – varunkr

+0

Я только что опубликовал новый logcat – dadadodo

0

Инициализировать ваши детали просмотра в onCreateView фрагмента не в 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

Вы звоните неправильно. Difference between onCreateView and onViewCreated in Fragment

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

Вместо вызовите

@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

Я пробовал то, что вы сказали, я все равно получаю ту же ошибку.Второй лог-код ошибки, который я опубликовал – dadadodo

+0

Потому что нет представления как displayjobs_detailed, так как у вас есть макет с именем displayjobs_detail – mubeen

+0

Я изменил это все же! – dadadodo

Смежные вопросы