I have this error, but I do not know how to resolve this error.
Error: fragments must be static so that they can be re-created by the system, and anonymous classes are not static [ValidFragment]
Please help me if you know how to solve
This is MainActivity.java
import android.annotation.TargetApi; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.content.LocalBroadcastManager; import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GoogleApiAvailability; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private DrawerLayout mDrawerLayout; private String keyPref = "test"; private SharedPreferences pref; private static SharedPreferences.Editor editor; private static ViewPager view; private FoodListFragment makanan = new FoodListFragment() { @Override public void doRefresh() { updateData(); } }; private FoodListFragment minuman = new FoodListFragment() { @Override public void doRefresh() { updateData(); } }; private FoodListFragment snack = new FoodListFragment() { @Override public void doRefresh() { updateData(); } }; private Adapter adapter = new Adapter(getSupportFragmentManager()); private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 4343; private BroadcastReceiver mRegistrationBroadcastReceiver; private static ProgressDialog loading; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pref = getApplicationContext().getSharedPreferences(keyPref, MODE_PRIVATE); editor = pref.edit(); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); final ActionBar ab = getSupportActionBar(); ab.setHomeAsUpIndicator(R.drawable.ic_menu); ab.setDisplayHomeAsUpEnabled(true); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); if (navigationView != null) { setupDrawerContent(navigationView); } ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); if (viewPager != null) { setupViewPager(viewPager); } FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setBackgroundTintList(ColorStateList.valueOf(Color.rgb(183,28,28))); fab.setOnClickListener(new View.OnClickListener() { @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void onClick(View view) { Intent intent = new Intent(getApplicationContext(), CartActivity.class); MainActivity.this.startActivity(intent); } }); TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); DBHelper db = new DBHelper(this); mRegistrationBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {
and this is the fragment class FoodListFragment.java
import android.graphics.Color; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.annotation.UiThread; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.InflateException; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; public abstract class FoodListFragment extends Fragment { private ArrayList<FoodCategory> foodList = new ArrayList<FoodCategory>(); private RecyclerView rv; private RecyclerViewAdapter adapter; private SwipeRefreshLayout swipeLayout; private View view; FoodListFragment() { } public void addFoods(ArrayList<FoodCategory> food) { foodList = food; if (adapter != null) { adapter.notifyDataSetChanged(); } } public void addFood(FoodCategory food) { foodList.add(food); if (adapter != null) { adapter.notifyDataSetChanged(); } } public void clearFood() { foodList.clear(); } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
source share