java - 如何从片段中调用类
问题描述
我正在制作一个警报应用程序,它将通知用户提供的时间。我正在MyAlarm
从我的片段中调用一个类,TimepickerFragment
但它没有传递给 MyAlarm 类。
以下是我的片段中的代码:
public class TimepickerFragment extends Fragment {
Button SetTime;
TimePicker timePicker;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.timepickerfragment,null);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
timePicker = (TimePicker) view.findViewById(R.id.timePicker);
SetTime = (Button) view.findViewById(R.id.settime);
SetTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar calendar = Calendar.getInstance();
calendar.set(
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH),
timePicker.getCurrentHour(),
timePicker.getCurrentMinute(),
0
);
setAlarm(calendar.getTimeInMillis());
Fragment fragment = null;
fragment = new Room1Fragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.screen_area, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
private void setAlarm(long timeInMillis) {
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent (getActivity(), MyAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0 , intent, 0);
alarmManager.setRepeating(AlarmManager.RTC , timeInMillis, AlarmManager.INTERVAL_DAY, pendingIntent);
Toast.makeText(getActivity(), "Alarm is set", Toast.LENGTH_SHORT).show();
}
});
}
}
它应该传递给这个类:
public class MyAlarm extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "MyAlarm Working", Toast.LENGTH_SHORT).show();
intent = new Intent(context, MyService.class);
context.startService(intent);
}
}
这是我的清单文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.haziqnaeem.settimer2">
<uses-permission android:name="android.permission.VIBRATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".MyAlarm"
android:enabled="true"
android:exported="true" />
<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>
</application>
需要帮忙
解决方案
You will also have to declare your MyAlarm
class in manifest file as follows
<receiver
android:name=".MyAlarm"
android:process=":remote" />
with following permissions
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.VIBRATE"/>
推荐阅读
- jenkins - 输入私钥时缺少 Jenkins 选项;“来自詹金斯大师的文件”和“来自詹金斯大师〜/ .ssh”
- gps - 如何从 csv 格式的虚假 AVL 提要创建 GTFS_RT 提要
- javascript - 使用反应生命周期解决 jquery .bind() 匿名函数中不可访问的变量
- sql-server - SQL Server Profiler 中的数据与扩展事件不一致
- c# - 反序列化列表
- r - 合并R中的几个数据框列
- javascript - Jquery + Ajax,Params 有数据,但响应说没有数据
- reactjs - 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。起源
- javascript - ajax 请求返回数据的 NaN
- ios - 当我单击 UITextField 这是 UITableViewCell 的子视图进行编辑时,它将运行跨 textFieldShouldBeginEditing 然后 Crash