I know this question has been asked,but I didn't solve this case obviously I have two fragments containing same details one with a view as a list and the others views as a grid got from data base and have an activity which contain a tool bar this tool bar contains just an icons button like this
all I need just a method that If I click the grid icon shows the Grid Fragment in the same activity with the same tool bar and if I clicked the list icon just replace the grid fragment with a list fragment by the way each fragment have an adapter and a getter and setter class this is the activity which contains the tool bar
package abtech.waiteriano.com.waitrer;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import abtech.waiteriano.com.waitrer.connection_class.ConnectionClass;
public class MenuActivity extends AppCompatActivity {
private android.support.v7.widget.Toolbar toolbar;
private ArrayList<String> category ;
ImageView listIcon, gridIcon;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
String menugridSTR = "Select ID,Code,Name,Name2 From Presets Where Active = 1 And Rest_ID_Active = 1 AND OutLet_ID_Active = 1 ORDER BY Code";
ResultSet rs = ConnectionClass.Ret_RS(menugridSTR);
listIcon = (ImageView) findViewById(R.id.listicon);
gridIcon = (ImageView) findViewById(R.id.gridicon);
category = new ArrayList<String>() ;
String str = "Select ID,Code,Name,Name2 From Presets Where Active = 1 And Rest_ID_Active = 1 AND OutLet_ID_Active = 1 ORDER BY Code";
rs = ConnectionClass.Ret_RS(str);
try {
while (rs.next()) {
category.add(rs.getString("Name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
Spinner navigationSpinner = new Spinner(getSupportActionBar().getThemedContext());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category);
navigationSpinner.setAdapter(adapter);
toolbar.addView(navigationSpinner, 0);
navigationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MenuActivity.this,
"you selected: " + category.get(position),
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.iconmenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
switch (item.getItemId()){
case R.id.searchicon:
// ...
return true;
case R.id.listicon:
setContentView(R.layout.activity_menu_lv);
return true;
case R.id.gridicon:
// ...
return true;
}
return super.onOptionsItemSelected(item);
}
}
and this activity.xml file
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context="abtech.waiteriano.com.waitrer.MenuActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" />
</LinearLayout>
and this is grid fragment class
package abtech.waiteriano.com.waitrer.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ImageView;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import abtech.waiteriano.com.waitrer.R;
import abtech.waiteriano.com.waitrer.adapters.CustomMenuGridViewAdapter;
import abtech.waiteriano.com.waitrer.connection_class.ConnectionClass;
import abtech.waiteriano.com.waitrer.getters_and_setters.MenuItem;
public class MenuGridFragment extends Fragment {
View rootView;
GridView menuGridView;
static ArrayList<MenuItem> menuGridArray = new ArrayList<MenuItem>();
CustomMenuGridViewAdapter customMenuGridViewAdapter;
ImageView listIcon, gridIcon;
public MenuGridFragment() {
// 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
menuGridView = (GridView) rootView.findViewById(R.id.menuGridView);
customMenuGridViewAdapter = new CustomMenuGridViewAdapter(getActivity(), R.layout.menu_row_grid, menuGridArray);
menuGridView.setAdapter(customMenuGridViewAdapter);
String menugridSTR = "Select ID,Code,Name,Name2 From Presets Where Active = 1 And Rest_ID_Active = 1 AND OutLet_ID_Active = 1 ORDER BY Code";
ResultSet rs = ConnectionClass.Ret_RS(menugridSTR);
try {
while (rs.next()) {
menuGridArray.add(new MenuItem(rs.getString("Name")));
}
} catch (SQLException e) {
e.printStackTrace();
}
return rootView;
}
}
it's xml file
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="abtech.waiteriano.com.waitrer.fragments.MenuGridFragment">
<GridView
android:id="@+id/menuGridView"
android:layout_width="match_parent"
android:background="#d2d2d2"
android:layout_height="fill_parent"
android:layout_margin="4dp"
android:columnWidth="80dp"
android:gravity="center"
android:horizontalSpacing="5dp"
android:numColumns="3"
android:stretchMode="columnWidth"
android:layout_below="@+id/toolbar" />
</FrameLayout>
this is list fragment class
package abtech.waiteriano.com.waitrer.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import abtech.waiteriano.com.waitrer.R;
import abtech.waiteriano.com.waitrer.adapters.CustomMenuListViewAdapter;
import abtech.waiteriano.com.waitrer.connection_class.ConnectionClass;
import abtech.waiteriano.com.waitrer.getters_and_setters.MenuListItem;
public class MenuLVFragment extends Fragment {
View rootView;
ListView menuListView;
static ArrayList<MenuListItem> listMenuArray = new ArrayList<MenuListItem>();
CustomMenuListViewAdapter customMenuListViewAdapter;
public MenuLVFragment() {
// 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
menuListView = (ListView) rootView.findViewById(R.id.menuLV);
customMenuListViewAdapter = new CustomMenuListViewAdapter(getActivity(), R.layout.menu_row_list,listMenuArray);
menuListView.setAdapter(customMenuListViewAdapter);
String menuListSTR = "Select ID,Code,Name,Name2 From Presets Where Active = 1 And Rest_ID_Active = 1 AND OutLet_ID_Active = 1 ORDER BY Code";
ResultSet rs = ConnectionClass.Ret_RS(menuListSTR);
try {
while (rs.next()){
listMenuArray.add(new MenuListItem(rs.getString("Name")));
}
} catch (SQLException e) {
e.printStackTrace();
}
return rootView;
}
}
it's xml file
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="abtech.waiteriano.com.waitrer.fragments.MenuLVFragment">
<ListView
android:id="@+id/menuLV"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
by the way I I need the grid fragment was the default view as when I start this activity always shows the grid fragment as a default one sorry if any thing doesn't clear and for long code,if any observation please post a comment LogCat Error
03-02 13:59:23.352 6741-6741/? E/ERRO: Unknown server host name 'Host is unresolved: null'.
03-02 13:59:23.389 6741-6741/? E/ERRO: Unknown server host name 'Host is unresolved: null'.
03-02 13:59:23.403 6741-6741/? E/ERRO: Unknown server host name 'Host is unresolved: null'.
03-02 13:59:23.508 6741-6766/? E/GED: Failed to get GED Log Buf, err(0)
03-02 13:59:23.526 6741-6766/? E/[PropSet]: connect fail
03-02 13:59:23.526 6741-6766/? E/libc: __system_property_set error : retry fail, errno 13(Permission denied)
03-02 13:59:23.526 6741-6766/? E/[PropSet]: send_prop_msg return err -5
03-02 14:01:34.965 6741-6741/abtech.waiteriano.com.waitrer E/AndroidRuntime: FATAL EXCEPTION: main
Process: abtech.waiteriano.com.waitrer, PID: 6741
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at abtech.waiteriano.com.waitrer.fragments.MenuLVFragment.onCreateView(MenuLVFragment.java:40)
at android.app.Fragment.performCreateView(Fragment.java:2069)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:899)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1072)
at android.app.BackStackRecord.run(BackStackRecord.java:852)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6102)
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:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)