0

私のフラグメントの名前はlocate_mapです。私は文字列配列を宣言し、それをString ArrayListとして変換しました。 ArrayListをlocate_updatedstatusという別のフラグメントに渡してください。私は自分のArrayListを通過すると同時に、locate_updatedstatuslocate_mapから切り替えるとbulding時にエラーがない私のlocate_updatedstatusフラグメント間のアンドロイド渡し配列が機能しません

上のリストビューとして、それを表示していましたID to_update_statusを持っている私のlocate_mapフラグメント上のボタンを持っています。しかし私がlocate_updatedstatusに移動するたびに、アプリがクラッシュします。

主な活動これは私がフラグメント間を切り替える方法です。私は、コンテナフラグメント

public void onSelectFragment(View v){ 
     Fragment newFragment; 

     if(v == findViewById(R.id.to_update_status)){ 
      newFragment = new locate_updatedstatus(); 
     } 
     else{ 
      newFragment = new locate_login(); 
     } 

     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.replace(R.id.fragment_container, newFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
    } 

locate_mapフラグメント

public class locate_map extends Fragment implements Serializable{ 

    public locate_map() { 
     // Required empty public constructor 

    } 

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

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

     String[] updatedArr = {"display this", "also this"}; 
     List<String> stringList = new ArrayList<String>(Arrays.asList(updatedArr)); 
     Bundle bundle = new Bundle(); 
     bundle.putSerializable("key", (Serializable) stringList); 
     return rootView; 
    } 

} 

locate_mapのXMLボタン

<Button 
     android:id="@+id/to_update_status" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_below="@+id/check_images" 
     android:layout_marginTop="15dp" 
     android:text="Update Status" 
     android:width="340dp" 
     android:height="70dp" 
     android:onClick="onSelectFragment" 
     /> 

locate_updatedstatusフラグメント

public class locate_updatedstatus extends Fragment implements Serializable { 


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


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_locate_updatedstatus, container, false); 

     ArrayList<String> stringList = (ArrayList<String>)getArguments().getSerializable("key"); 


       ListView listSource = (ListView) rootView.findViewById(R.id.updates); 

       ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>(
         getActivity(), 
         android.R.layout.simple_list_item_1, 
         stringList 
       ); 

       listSource.setAdapter(listViewAdapter); 

     return rootView; // Inflate the layout for this fragment 
    } 

} 

ロカとナビゲーションドロワーアクティビティを使用していますte_updatedstatus xml listview

<ListView 
      android:layout_width="match_parent" 
      android:layout_height="350dp" 
      android:layout_marginTop="60dp" 
      android:id="@+id/updates" 
      android:listSelector="@android:color/transparent" 
      /> 

答えが詳細であれば、私は感謝します。私はアンドロイドプログラミングの初心者で私と一緒に耐えてください。

logcatエラー

java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.os.Bundle.getSerializable(java.lang.String)' on a null object reference                   at com.example.makati.sidebar.locate_updatedstatus.onCreateView(locate_updatedstatus.java:31) 
+0

データを取得logcatの誤差は何ですか? – chirag90

+0

私は今質問をlogcatのerorrで更新しました –

答えて

0

必要なのは、Fragment に引数としてBundleを追加していない、あなたのコードでbundle.putStringArray

String[] updatedArr = {"display this", "also this"}; 
bundle.putStringArray(KEY, updatedArr) 

bundle.getStringArray(KEY)

で修正しlinkを使用してくださいクラス構成または

0

以下のコードは、バンドルを作成し、それにarraylistを追加するコードです。しかし、どこで使用されるのかは特定されていません。

List<String> stringList = new ArrayList<String>(Arrays.asList(updatedArr)); 
    Bundle bundle = new Bundle(); 
    bundle.putSerializable("key", (Serializable) stringList); 

解決策:最初のlocate_loginとlocate_updatedstatusフラグメントが順番に作成されることを望みます。

locate_loginフラグメント:コンテンツ活動の意図に

List<String> stringList = new ArrayList<String>(Arrays.asList(updatedArr)); 
Bundle bundle = new Bundle(); 
bundle.putSerializable("key", (Serializable) stringList); 
getActivity().getIntent().putExtras("key",bundle); 

locate_upadtestatusフラグメントを入れしようとしている:活動の意図から

ArrayList<String> stringList = (ArrayList<String>)getActivity().getIntent().getExtras("key"); 
関連する問題