首页 > 解决方案 > 如何按前一天的按钮,前一天的日历应该来?

问题描述

我在我的应用程序 ui演示中使用以下日历

我想更改上一个和下一个按钮,以便在单击它时转到上一个和第二天。

示例:因此,如果标记了月份的 22 并且我单击“上一个”,则应该选择 21。

主要活动

  public class MainActivity extends AppCompatActivity implements OnClickListener
    
    {
    
       
        public LinearLayout l1;
        Toolbar toolbar;
        private static Boolean set = false;
        public PendingIntent pendingIntent;
        public AlarmManager alarmManager;
        ImageView btnsync;
        private FirebaseUser mFirebaseUser;
        private FirebaseAuth mFirebaseAuth;
        public DatabaseReference mDatabase;
        public String mUserId;
        TextView email;
        private ProgressDialog pDialog;
        private ProgressDialog pD;
        Toast toast;
    
    
        @SuppressWarnings("deprecation")
        @SuppressLint("NewApi")
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            mFirebaseAuth = FirebaseAuth.getInstance();
            mFirebaseUser = mFirebaseAuth.getCurrentUser();
            mTitleTextView = (TextView) findViewById(R.id.currentMonth);
            alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            calendarView = (GridView) findViewById(R.id.calendar_grid);
            _calendar = Calendar.getInstance(Locale.getDefault());
            date = String.format("%02d", Integer.parseInt("" + _calendar.get(Calendar.DATE)));
            month = _calendar.get(Calendar.MONTH) + 1;
            year = _calendar.get(Calendar.YEAR);
            navigationView = (NavigationView) findViewById(R.id.nav_view);
            drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            l1 = (LinearLayout) findViewById(R.id.R1);
            View view = null;
            dba = new DataAdapter(getApplicationContext());
            dbn = new DataHelper(getApplicationContext());
    
    
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                Window window = getWindow();
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                window.setStatusBarColor(getResources().getColor(R.color.ColorPrimaryDark));
            }
    
            try {
                //create local database
                dba.createDB();
                dbn.createDB();
    
            } catch (IOException e) {
                e.printStackTrace();
            }
            //initialize firebase database for note
            if (mFirebaseUser != null) {
                mUserId = mFirebaseUser.getUid();
                mDatabase = FirebaseDatabase.getInstance().getReference();
            }
    
            try {
                //get current day data from database
                nirnay = dba.getdata("" + date, "" + month, "" + year);
            } catch (Exception e) {
                //data not available in database so update app to get new
                AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
                alertDialog.setTitle("Hindi Calendar Update");
                alertDialog.setMessage("No data available please update application for more data");
                alertDialog.setButton("Update", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_VIEW);
                        intent.addCategory(Intent.CATEGORY_BROWSABLE);
                        final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
                        try {
                            intent.setData(Uri.parse("market://details?id=" + appPackageName));
                        } catch (android.content.ActivityNotFoundException anfe) {
                            intent.setData(Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName));
                        }
    
                        startActivity(intent);
                        finish();
                    }
                });
                alertDialog.show();
    
            }
    
            //set grid data
            adapter = new GridCell_Adapter(getApplicationContext(), R.id.day_event, month, year, view, calendarView, l1);
            adapter.notifyDataSetChanged();
    
            //initialize viewpager
            viewPager = (ViewPager) findViewById(R.id.viewpager);
            adp = new CustomPager_Adapter(this, adapter, l1);
            viewPager.setAdapter(adp);
    
            //set current month for viewpager
            int item = getpos(month, year);
    
    
            //viewpager swipe animation
            viewPager.setPageTransformer(false, new ViewPager.PageTransformer() {
                @Override
                public void transformPage(View page, float position) {
                    page.setRotationY(position * -30);
    
                }
            });
    
    
            setupnavigationDrawer();
    
            //set toolbar title of month from database
            final Cursor cursor = dba.getTitle();
            cursor.moveToPosition(0);
            mTitleTextView.setText(cursor.getString(1));
    
            viewPager.addOnPageChangeListener(new OnPageChangeListener() {
    
                public void onPageSelected(int position) {
    
                    if (viewPager.getCurrentItem() == 0) {
                        if (toast == null || !toast.getView().isShown()) {
                            toast = Toast.makeText(MainActivity.this, "No further data", Toast.LENGTH_SHORT);
                            toast.show();
                        }
                    } else if (viewPager.getCurrentItem() == (viewPager.getAdapter().getCount() - 1)) {
                        if (toast == null || !toast.getView().isShown()) {
                            toast = Toast.makeText(MainActivity.this, "No further data, we will update the new data soon.", Toast.LENGTH_SHORT);
                            toast.show();
                        }
                    }
    
                    switch (position) {
    
                        //case equal to no of your month in viewpager
                        case 0:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 1:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 2:
    
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 3:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 4:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 5:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 6:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 7:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 8:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 9:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
                        case 10:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 11:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 12:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                        case 13:
                            cursor.moveToPosition(position);
                            mTitleTextView.setText(cursor.getString(1));
                            break;
    
                    }
                }
    
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                }
    
                @Override
                public void onPageScrollStateChanged(int state) {
    
    
                }
            });
    
            viewPager.setCurrentItem(item);
    
    
            if (set == false) {
                try {
                    GridCell_Adapter.getData("" + date, "" + String.format("%02d", month), "" + year, MainActivity.this);
                    set = true;
    
                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(), "Data Not Found here", Toast.LENGTH_SHORT).show();
                }
            }
    
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater menuInflater = getMenuInflater();
            menuInflater.inflate(R.menu.main_menu, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            switch (item.getItemId()) {
                case R.id.previous:
                    if (viewPager.getCurrentItem() == 0) {
                        if (toast == null || !toast.getView().isShown()) {
                            toast = Toast.makeText(MainActivity.this, "No further data", Toast.LENGTH_SHORT);
                            toast.show();
                        }
                    } else {
                        viewPager.setCurrentItem(getItem(-1), true);
                    }
    
                    return true;
                case R.id.next:
    
                    if (viewPager.getCurrentItem() == (viewPager.getAdapter().getCount() - 1)) {
                        if (toast == null || !toast.getView().isShown()) {
                            toast = Toast.makeText(MainActivity.this,
                                    "No further data, we will update the new data soon.", Toast.LENGTH_SHORT);
                            toast.show();
                        }
                    } else {
                        viewPager.setCurrentItem(getItem(+1), true);
                    }
                    return true;
    
                default:
                    return super.onOptionsItemSelected(item);
            }
        }
    
    
        private String getCurrentVersion() {
    
            PackageManager pm = this.getPackageManager();
            PackageInfo pInfo = null;
    
            try {
                pInfo = pm.getPackageInfo(this.getPackageName(), 0);
    
            } catch (PackageManager.NameNotFoundException e1) {
                e1.printStackTrace();
            }
            String currentVersion = pInfo.versionName;
            return currentVersion;
        }
    
        private void setupnavigationDrawer() {
            getProfileInformation();
            navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    
                // This method will trigger on item Click of navigation menu
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
    
                    switch (menuItem.getItemId()) {
    
                        case R.id.home:
                            Intent intent = getIntent();
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(intent);
                            drawer.closeDrawers();
                            break;
                        case R.id.all_note:
                            startActivity(new Intent(MainActivity.this, All_Note.class));
                            drawer.closeDrawers();
                            break;
    
                        case R.id.festival:
                            startActivity(new Intent(MainActivity.this, Festival.class));
                            drawer.closeDrawers();
                            break;
                        case R.id.festival_planing:
                            startActivity(new Intent(MainActivity.this, HolidayPlanning.class));
                            drawer.closeDrawers();
                            break;
                        case R.id.choghadiya:
                            startActivity(new Intent(MainActivity.this, Choghdaiya.class));
                            drawer.closeDrawers();
                            return true;
                        case R.id.rashi:
                            startActivity(new Intent(MainActivity.this, Rashi.class));
                            drawer.closeDrawers();
                            return true;
    
                        case R.id.location:
                            startActivity(new Intent(MainActivity.this, Search_City.class));
                            drawer.closeDrawers();
                            return true;
                        case R.id.event:
                          /*  set here month and year
                          * if your database has more month then year then according to
                          * set positon 13 and positon 12 */
    
                            int pos = viewPager.getCurrentItem();
    
                            util.month = pos ;
                            util.year = year;
    
                            if (pos == 13) {
                                util.month = 1;
                                util.year = 2019;
                            } else if (pos == 12) {
                                util.month = 12;
                                util.year = 2018;
                            }
                            startActivity(new Intent(MainActivity.this, Detail.class));
                            drawer.closeDrawers();
    
                            return true;
    
    
                        case R.id.check_for_update:
                            checkUpdate();
                            return true;
    
                        case R.id.rate:
                            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName())));
                            break;
    
    
                        case R.id.share:
                            try {
                                Intent shareAppIntent = new Intent(android.content.Intent.ACTION_SEND);
                                shareAppIntent.setType("text/plain");
                                shareAppIntent.putExtra(android.content.Intent.EXTRA_TEXT, getString(R.string.app_name) + " \nhttps://play.google.com/store/apps/details?id=" + getPackageName());
                                startActivity(Intent.createChooser(shareAppIntent, "Share via"));
                            } catch (Exception e) {
                            }
                            break;
    
                    }
    
                    return true;
                }
            });
            ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.drawer_open, R.string.drawer_close) {
    
                @Override
                public void onDrawerClosed(View drawerView) {
                    // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
                    super.onDrawerClosed(drawerView);
                }
    
                @Override
                public void onDrawerOpened(View drawerView) {
                    // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank
                    super.onDrawerOpened(drawerView);
                }
            };
    

细节.Java

public class Detail extends AppCompatActivity implements OnClickListener {
private Button prev = null;
private Button next = null;
public static utility util = MainActivity.util;
DataAdapter dba;
RecyclerView rv;
public static ViewPager viewPager;
private TabLayout tabLayout;
private ArrayList<HashMap<String, String>> data;
Context c;
public TextView mTitleTextView;
ViewPagerAdapter adapter;
int current;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(getResources().getColor(R.color.ColorPrimaryDark));
    }

    setContentView(R.layout.tab_bar);
    Toolbar toolbar = (Toolbar) findViewById(R.id.action);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    viewPager = (ViewPager) findViewById(R.id.pager);
    tabLayout = (TabLayout) findViewById(R.id.tabs);
    mTitleTextView = (TextView) findViewById(R.id.currentMonth);
    mTitleTextView.setTextSize(22);
    dba = new DataAdapter(this);


    System.out.println("pos...month.."+util.month);

   /* util.month=*/
    mTitleTextView.setText("" + getMonth(util.month - 1) + "-" + util.year);
    prev = (Button) findViewById(R.id.prev);
    prev.setOnClickListener(this);
    next = (Button) findViewById(R.id.next);
    next.setOnClickListener(this);
    c = this;

    setupViewPager(viewPager);
    tabLayout.setupWithViewPager(viewPager);
    adapter.notifyDataSetChanged();


    tabLayout.setOnTabSelectedListener(
            new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    super.onTabSelected(tab);
                    current = tab.getPosition();

                }
            });}


private void setupViewPager(ViewPager viewPager) {

    adapter = new ViewPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(adapter);

}

class ViewPagerAdapter extends FragmentStatePagerAdapter {
    final int PAGE_COUNT = 3;
    private String[] tabs = {"calendar", "poonam", "amash"};

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return Month_fragment.newInstance(position);
    }


    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

    @Override
    public int getCount() {
        return PAGE_COUNT;
    }


    @Override
    public CharSequence getPageTitle(int position) {
        return tabs[position];
    }
}


public boolean onSupportNavigateUp() {
    finish();
    return true;
}


public void setvalue(int month, int year) {

    Cursor cursor = dba.getDetails(month, year, current);

    data = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> map = new HashMap<String, String>();


    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
        map.put("tithi", (cursor.getString(5) + " " + cursor.getString(0)));
        map.put("nakshatra", cursor.getString(1));
        map.put("chandra", cursor.getString(2));
        map.put("date", (cursor.getString(3) + " - " + month + " - " + year));
        map.put("utshav", cursor.getString(4));
        map.put("day", cursor.getString(6));
        data.add(map);
        map = new HashMap<String, String>();
    }
    rv = (RecyclerView) findViewById(R.id.recycler_view);
    rv.setLayoutManager(new LinearLayoutManager(this));
    Detail_Adapter ada = new Detail_Adapter(getApplicationContext(), data);
    rv.setAdapter(ada);
    ada.notifyDataSetChanged();
    adapter.notifyDataSetChanged();
}

public static String getMonth(int month) {
    String monthname = "" + new DateFormatSymbols().getMonths()[month];
    return monthname;
}

public void onBackPressed() {
    super.onBackPressed();
}






@Override
public void onClick(View v) {
    try {
        switch (v.getId()) {

            case R.id.prev:

                if (util.month == 12 && util.year == 2017) {

                } else
                    util.month--;

                if (util.month == 1) {
                    util.month = 1;
                    util.year = 2018;
                    setvalue(1, 2018);
                    mTitleTextView.setText("" + getMonth(0) + "-" + "2018");
                    util.month = 13;
                    util.year = 2017;
                } else if (util.month == 0 && util.year == 2018) {
                    util.month = 12;
                    util.year = 2017;
                    setvalue(12, 2017);
                    mTitleTextView.setText("" + getMonth(11) + "-" + "2017");
                } else if (util.month == 0 && util.year == 2019) {
                    util.month = 12;
                    util.year = 2018;
                    setvalue(12, 2018);
                    mTitleTextView.setText("" + getMonth(11) + "-" + "2018");
                } else {
                    setvalue(util.month, util.year);
                    mTitleTextView.setText("" + getMonth(util.month - 1) + "-" + util.year);
                }

                break;
            case R.id.next: {

                if (util.month == 1 && util.year == 2019) {
                } else
                    util.month++;
                System.out.println("current month : " + util.month + " - " + util.year);
                if (util.month == 13 && util.year == 2017) {
                    util.month = 1;
                    util.year = 2018;
                    setvalue(1, 2018);
                    mTitleTextView.setText("" + getMonth(0) + "-" + "2018");
                } else if (util.month == 13 && util.year == 2018) {
                    util.month = 1;
                    util.year = 2019;
                    setvalue(1, 2019);
                    mTitleTextView.setText("" + getMonth(0) + "-" + "2019");
                } else {
                    setvalue(util.month, util.year);
                    mTitleTextView.setText("" + getMonth(util.month - 1) + "-" + util.year);
                }
            }

            break;
            default:
                break;
        }
    } catch (Exception e) {

    }
}

}

布局

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">

<include layout="@layout/actionbar"
    android:id="@+id/action"
    />

<android.support.design.widget.TabLayout
    android:layout_below="@+id/action"
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabGravity="fill"
    app:tabIndicatorColor="@color/white"
    app:tabMode="fixed"
    android:background="@color/Primary_light"
    app:tabTextAppearance="@style/TabLayoutTextStyle"
    app:tabTextColor="@color/tra_white"
    app:tabSelectedTextColor="@color/white"/>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_below="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:layout_weight="1"
    >



</android.support.v4.view.ViewPager>
<LinearLayout
    android:id="@+id/bottomLayout"
    android:layout_alignParentBottom="true"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:orientation="horizontal"
    android:paddingLeft="2sp"
    android:paddingRight="2sp"
    android:background="@color/white">

    <Button
        android:id="@+id/prev"
        android:layout_width="0sp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="4"
        android:layout_margin="2dp"
        android:text="Previous"
        android:theme="@style/AppTheme.Button"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/white" />

    <Button
        android:id="@+id/next"
        android:layout_width="0sp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="4"
        android:text="Next"
        android:layout_margin="2dp"
        android:theme="@style/AppTheme.Button"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/white" >
    </Button>
</LinearLayout>
               

我已经尝试了很长时间,我得到了错误

标签: androidcalendar

解决方案


推荐阅读