我里面有我的碎片ViewPager,我希望其中一个可以点击RelativeLayout.我正在使用数据绑定:
<data>
<variable
name="handlers"
type="com.matip.presenters.MyPresenter" />
</data>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> handlers.onLayoutClick()}">
...
...
...
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的碎片onCreateView:
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBind = DataBindingUtil.inflate(inflater, R.layout.fragment_layout, container, false);
presenter = new MyPresenter();
mBind.includedLayout.setHandlers(presenter);
return mBind.getRoot();
}
Run Code Online (Sandbox Code Playgroud)
但是onLayoutClick没有被召唤.它与ViewPager有关吗?是否需要点击而不是里面的片段?如果是这样,我该如何解决?
编辑
My ViewPager Adapter:
private class MyViewPagerAdapter extends FragmentStatePagerAdapter {
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:
return MainInfoFragment.newInstance(parkingId);
case …Run Code Online (Sandbox Code Playgroud) 在我在我的应用程序中使用geofence之前,我使用IntentService作为其回调,一切正常.但现在由于Android 8的变化,我无法再开始这样的服务了.所以现在我使用BroadcastReceiver作为我的Geofencing回调,并且接收器正在启动服务(前景一个用于android 8).但随着这种变化,我注意到地理围栏不再有效.它通常不会被打破,我认为最糟糕的情况是应用程序在前台.最好的情况是应用程序被杀,然后地理围栏正在被攻击.BroadcastReceivers和地理围栏是否有问题,或者我做错了什么?我提供了我的代码:
用于添加地理围栏的通用类:
public abstract class BaseGeofence<T extends BaseGeofenceObject> implements OnSuccessListener<Void>, OnFailureListener {
protected int RADIUS_IN_METERS = 300;
protected GeofencingClient client;
protected Context context;
public BaseGeofence(Context context) {
this.client = LocationServices.getGeofencingClient(context);
this.context = context;
}
@SuppressLint("MissingPermission")
public void addGeofencing(final T object) {
if (GPSUtils.wasLocationChecked()) {
Geofence geofence = (new Geofence.Builder()
.setRequestId(Integer.toString(getId(object)))
.setCircularRegion(
object.getLat(),
object.getLon(),
RADIUS_IN_METERS
)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
Geofence.GEOFENCE_TRANSITION_EXIT)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.build());
client.addGeofences(getGeofencingRequest(geofence), getGeofencePendingIntent(object))
.addOnSuccessListener(this).addOnFailureListener(this);
}
}
private GeofencingRequest getGeofencingRequest(Geofence geofence) {
GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
builder.addGeofence(geofence);
return …Run Code Online (Sandbox Code Playgroud) 通过我的应用程序,我使用创建日历事件ContentResolver。活动已成功创建,您可以在系统日历应用程序中看到它们。当用户使用 Google 日历应用程序时会出现问题。有时,事件需要几分钟的时间才会出现。此外,当该事件最终出现在 Google 日历中并且用户将其删除时,它仍然会在系统日历中再次可见几分钟。
在我的应用程序中,我想创建在 caledndar 中打开新创建的事件的意图,但由于该同步问题,它没有被显示,因为它还不可见。另外,在创建新事件之前,我会检查它是否已经存在,并且由于同步,它似乎没有被删除,并且我没有在应该创建新事件时创建新事件。
这是我创建事件的方式:
fun addEventToCalendar(context: Context,
title: String,
description: String?,
startDateMillis: Long,
endDateInMillis: Long,
tag: String): Long? {
val timeZone = TimeZone.getDefault()
val values = ContentValues().apply {
put(CalendarContract.Events.DTSTART, startDateMillis)
put(CalendarContract.Events.DTEND, endDateInMillis)
put(CalendarContract.Events.TITLE, title)
description?.let { put(CalendarContract.Events.DESCRIPTION, description) }
put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.id)
put(CalendarContract.Events.CALENDAR_ID, getCalendarId(context))
put(CalendarContract.Events.UID_2445, tag)
}
val uri = context.contentResolver.insert(CalendarContract.Events.CONTENT_URI, values)
return uri?.lastPathSegment?.toLong()
}
fun checkIfEventAlreadyExist(context: Context, tag: String): Long? {
val projection = arrayOf(CalendarContract.Events._ID, CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND, CalendarContract.Events.UID_2445)
val cursor = context.contentResolver.query(
CalendarContract.Events.CONTENT_URI, …Run Code Online (Sandbox Code Playgroud) 我是新作曲家,目前在尝试创建HorizontalPager. 以前显示的是分页器项目填充宽度,然后高度与宽度相同:
Surface(
modifier = Modifier
.fillMaxWidth()
.aspectRatio(1.0f),
elevation = 16.dp
) { ... }
Run Code Online (Sandbox Code Playgroud)
现在我需要更改它,以便该项目仍然填充宽度但高度包裹内容,然后每个项目的高度都被平均到最高的项目。另外我希望最小高度与宽度相同。
我发现了类似内在测量的东西,但当尝试使用它时什么也没发生:
Surface(
modifier = Modifier
.fillMaxWidth()
.height(IntrinsicSize.Min),
elevation = 16.dp
) { ... }
Run Code Online (Sandbox Code Playgroud)
我也不知道如何将最小高度设置为与宽度相同
android android-jetpack-compose android-jetpack-compose-pager
我正在使用 FilenameFilter 类列出目录中具有特定扩展名的所有文件。但我还想列出该目录中的所有目录。我在网上搜索了一下,只找到了如何使用FilenameFilter进行多个扩展名。但是我怎样才能对目录做到这一点呢?
Here is code that I use to list all .txt files:
File[] listOfFiles = folder.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".txt");
}
});
Run Code Online (Sandbox Code Playgroud)
Is there even a way to do it via filter or do I have to do it in some other way?
对于学校项目,我必须使用数据库来编写Java程序,为此,我必须将ojdbc6.jar导入到该项目文件中。我知道没有它我将无法使用数据库,但我真的不知道这个文件是什么。有人可以解释吗?此类文件的调用方式和用途是什么?
最近我一直在阅读android中的aboout数据绑定.我知道如何在更新ui时有用,但事件处理的优势是什么?在XML中android:onClick为活动中的方法分配似乎与使用较少的代码一样.我什么时候应该使用哪个?