如何在Android中根据系统时间启用或禁用按钮



我想在安卓系统中启用该按钮,时间为上午9点至9点30分,下午5点至5点30分。其余时间,我希望该按钮被禁用。我如何在Java中做到这一点?我已经发布了下面的代码。。。请修改。

import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.navigation.NavigationView;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class mark extends AppCompatActivity {
DrawerLayout drawerLayout;
ActionBarDrawerToggle actionBarDrawerToggle;
NavigationView navigationView;
int currenthour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
int currentminute = Calendar.getInstance().get(Calendar.MINUTE);
boolean isButtonEnabled = currentminute <=30 && (currenthour ==9 || currenthour ==17);
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mark);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
setUpToolbar();
navigationView = (NavigationView) findViewById(R.id.navigation_menu);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId())
{
case  R.id.nav_home:
Intent intent = new Intent(mark.this, home.class);
startActivity(intent);
break;
case R.id.mark:
Intent intent1 = new Intent(mark.this,mark.class);
startActivity(intent1);
break;
}
return false;
}
});
b1.setEnabled(isButtonEnabled);
}
public void setUpToolbar() {
drawerLayout = findViewById(R.id.drawerLayout);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
}

}

这里有一个可能的Kotlin实现:

val currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY)
val currentMinute = Calendar.getInstance().get(Calendar.MINUTE)
val isButtonEnabled = currentMinute <= 30 && (currentHour == 9 || currentHour == 17)
button.isEnabled = isButtonEnabled

以下是一个可能的Java实现:

int currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
int currentMinute = Calendar.getInstance().get(Calendar.MINUTE);
boolean isButtonEnabled = currentMinute <= 30 && (currentHour == 9 || currentHour == 17);
button.setEnabled(isButtonEnabled);

编辑

由于未初始化b1按钮实例,因此引发异常
此外,您应该定义一个单独的函数来处理按钮切换
最后,类名应该是大写的。

public class Mark extends AppCompatActivity {
DrawerLayout drawerLayout;
ActionBarDrawerToggle actionBarDrawerToggle;
NavigationView navigationView;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mark);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);
setUpToolbar();
// Initialize the button instance
b1 = findViewById(R.id.b1);
navigationView = (NavigationView) findViewById(R.id.navigation_menu);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId())
{
case R.id.nav_home:
Intent intent = new Intent(mark.this, home.class);
startActivity(intent);
break;
case R.id.mark:
Intent intent1 = new Intent(mark.this,mark.class);
startActivity(intent1);
break;
}
return false;
}
});

// Enable or disable the button
enableDisableButton()
}
public void setUpToolbar() {
drawerLayout = findViewById(R.id.drawerLayout);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
}
// Function that handles button state
private void enableDisableButton() {
int currenthour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
int currentminute = Calendar.getInstance().get(Calendar.MINUTE);
boolean isButtonEnabled = currentminute <=30 && (currenthour ==9 || currenthour ==17);
b1.setEnabled(isButtonEnabled);
}
}

您可以在这里找到一个AlarmManager实现的好例子。

这是一个返回24小时甲酸中当前时间的函数


public  String getCurrentHHMMSS_24() {
String currentDateAndTime = new SimpleDateFormat("HH:mm:ss").format(new Date());
return currentDateAndTime;

}
// function which return true and false acording to your time
public  boolean buttoncheck() {
boolean enablebutton=false;
String[] splittime=getCurrentDateHHMMSS_24().split(":");
if ((splittime[0].equals("09") ||  (splittime[0].equals("17"))) && splittime[1].equals("30" )) 
{
enablebutton=true;
}
return enablebutton;
}

最新更新