When I try to pass a parameter from FragmentActivity to a fragment, it gives me a null pointer exception in getArguments () in the fragment.
Here is my FragmentActivity code
public class IndexChartActivity extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.index_chart); IndexFragmentActivity indexFragment = (IndexFragmentActivity)getSupportFragmentManager().findFragmentById(R.id.index_fragment); indexFragment.newInstance("ASPI"); } }
Here is index_chart.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" android:orientation="vertical" > <fragment android:id="@+id/header_fragment" android:name="com.lk.ignitionit.cse.util.HeaderFragmentActivity" android:layout_width="match_parent" android:layout_height="wrap_content" /> <fragment android:id="@+id/index_fragment" android:name="com.lk.ignitionit.cse.util.IndexFragmentActivity" android:layout_width="match_parent" android:layout_height="wrap_content" /> <fragment android:name="com.lk.ignitionit.cse.util.ChartFragmentActivity" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
and here is a fragment
public class IndexFragmentActivity extends Fragment { protected ImageView ivASPI; protected ImageView ivMPI; protected ImageView ivSP; protected TextView tvMain; protected TextView tvTop; protected TextView tvBottom; String response = null; String result = null; String [] resultArr = null; Bundle b = new Bundle(); String indexType = null; int layout; IndexFragmentActivity f = null; public IndexFragmentActivity newInstance(String index) { f = new IndexFragmentActivity(); Bundle args = new Bundle(); args.putString("indextype", index); f.setArguments(args); return f; } public String getSelectedIndex() { return f.getArguments().getString("indextype"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if(getSelectedIndex().equals("ASPI")){ layout = R.layout.aspi_header; }else if(getSelectedIndex().equals("MPI")){ layout = R.layout.mpi_header; }else{ layout = R.layout.sp_header; } View view = inflater.inflate(layout, container, false); tvMain = (TextView) view.findViewById(R.id.tv_main); tvTop = (TextView) view.findViewById(R.id.tv_top); tvBottom = (TextView) view.findViewById(R.id.tv_bottom); new ServiceAccess().execute(""); tvMain.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { b.putString("type", "S&P SL20"); Activity activity = getActivity(); Intent intent = new Intent(activity, IndexChartActivity.class); intent.putExtras(b); startActivity(intent); } }); return view; } }
and here is my error
Caused by: java.lang.NullPointerException at com.lk.ignitionit.cse.util.IndexFragmentActivity.getSelectedIndex(IndexFragmentActivity.java:69)
I mentioned a lot of stackoverflow questions related to this and tried the code example provided by http://developer.android.com/guide/components/fragments.html . But still no luck
Really appreciate any feedback as this is apparently a very simple problem that I cannot understand.
Thanks at Advance
source share