我当前的 Android 应用程序需要从本地 Sqlite 数据库中获取带有计数字段的行。
我意识到我需要让我的 DO 实体定义此计数字段并 @Ignore(ed)
我用谷歌搜索并找到了这个页面
@Entity
data class User(
@PrimaryKey val id: Int,
val firstName: String?,
val lastName: String?,
@Ignore val picture: Bitmap?
)
Run Code Online (Sandbox Code Playgroud)
但是,当我将这个确切的 Kotlin 代码复制并粘贴到我的应用程序中时,它无法构建并出现这些异常
database_room:kaptStagingDebugKotlin FAILED
e: /Users/rossulbricht/projects/silkroad/database_room/build/tmp/kapt3/stubs/stagingDebug/org/dread/pirate/database_room/model/User.java:7: error: Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).
public final class User {
^
Tried the following constructors but they failed to match: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用cameraApi2在Android上实现基于触摸的焦点.它有点工作,但它似乎并不总是适合我.我的实现如下:
首先,我使用以下步骤创建Camera PreviewSession:
mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_AUTO);
Run Code Online (Sandbox Code Playgroud)
然后我调用createCaptureSession并在其中调用
mCaptureSession.setRepeatingRequest( mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler);
Run Code Online (Sandbox Code Playgroud)
我已经实现了OnTouch Listener来捕获屏幕的触摸区域并生成AF区域
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_REGIONS, meteringRectangleArr);
mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler);
Run Code Online (Sandbox Code Playgroud)
在captureCallback中,我在onCaptureCompleted中执行以下步骤
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START);
mCaptureSession.capture(mPreviewRequestBuilder.build(), null, mBackgroundHandler);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_IDLE);
mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, mBackgroundHandler);
Run Code Online (Sandbox Code Playgroud)
触摸后,相机焦点有时会起作用,有时预览会完全模糊.
我在执行特定EditText字段中的发送密钥时遇到问题。我尝试了一个肮脏的xpath和id,但是它仍然没有输入文本字段。但是我觉得找到元素没有问题。但是,它不会单击到元素中。
因此,应用程序中发生的事情是,当用户选择页面时,它会打开一个Web视图,并且该EditText字段位于其中WebView。
这是我从鸦片检查员那里得到的肮脏的xpath:
/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.support.v4.view.ViewPager/android.view.ViewGroup/android.widget.EditText[1]
Run Code Online (Sandbox Code Playgroud)
这是不错的ID:
@FindBy(id = "test_number")
public WebElement testNumberTextField;
Run Code Online (Sandbox Code Playgroud)
我也尝试使用肮脏的xpath通过xpath使用find。
这是我尝试输入文本的方法。通过注释的代码,您可以看到我也尝试了其他方法来使其正常运行,但仍然没有成功:
public void enterTestNumber(){
//List<WebElement> menu22 =drive.getDriver().findElements(By.className("android.widget.EditText"));
// menu22.get(1).sendKeys(randomStringGeneratorMethods.randomAlphaNumericString(7));
testPage.testNumberTextField.sendKeys(randomStringGeneratorMethods.randomAlphaNumericString(7));
//js.executeScript("document.getElementById('"+testPage.testNumberTextField+").value='"+randomStringGeneratorMethods.randomAlphaNumericString(7)+"';");
}
Run Code Online (Sandbox Code Playgroud)
随机生成器只是一个随机字符串生成器,它是:
public String randomAlphaNumericString(int characterLength) {
return RandomStringUtils.randomAlphanumeric(characterLength);
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何使它工作,以便可以在此EditText字段中键入文本?
我有一个AppBar和RecyclerViewin CoordiantorLayout。SwipeToRefresh 必须全屏显示,但RecyclerView不能向下滚动。
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="128dp"/>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
如何在没有库的协调器布局中添加全屏下拉刷新。
android swiperefreshlayout android-recyclerview android-coordinatorlayout android-appbarlayout
我有以下应用程序代码。
public static long advanceByMax1HourWithoutOverflow(long currentTimeMillis) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = Instant.ofEpochMilli(currentTimeMillis).atZone(zoneId);
// 0-23
int hour = zonedDateTime.getHour();
if (hour < 23) {
zonedDateTime = zonedDateTime.plusHours(1);
return zonedDateTime.toInstant().toEpochMilli();
}
// 0-59
int minute = zonedDateTime.getMinute();
if (minute < 59) {
zonedDateTime = zonedDateTime.plusMinutes(1);
return zonedDateTime.toInstant().toEpochMilli();
}
return currentTimeMillis;
}
Run Code Online (Sandbox Code Playgroud)
我用以下内容为它编写了一个单元测试。
@Test
public void advanceByMax1HourWithoutOverflow() {
/*
27 October 2018
1540648800000 -> 1540652400000
22:00 -> 23:00
*/
long currentTimeMillis = 1540648800000L;
long expected = 1540652400000L;
long …Run Code Online (Sandbox Code Playgroud) 我们的应用程序依赖于让我们从和AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)中选取浅色和深色主题颜色values/colorsvalues-night/colors
但是每次我们尝试使用 时WebView,它都会从重置 UiMode 开始,并且我们的应用程序会混淆为我们的主题选择哪些颜色值
有人遇到类似的问题吗?
第一个问题.很长一段时间的搜索者.
我通过扩展DialogPreference实现了timePicker首选项,就像在android文档中一样.一切正常,我可以通过onSharedPreferenceChanged()和DialogPreference onSetInitialValue()的覆盖来设置摘要.
我的目标是始终使用其值和来自资源的其他字符串显示摘要.
例如,在我的ListPreference中,我有:
android:summary="@string/pref_list_camera_summary"
Run Code Online (Sandbox Code Playgroud)
解析为:
<string name="pref_list_camera_summary">Use camera: %s</string>
Run Code Online (Sandbox Code Playgroud)
在我的timePreference%s不会扩展.我已经四处搜索,我无法弄清楚如何获得dialogPreference/timePreference来做到这一点.我可以在onSetInitalValue()中手动设置摘要,如下所示:
setSummary(getSummary() + " " + DateFormat.getTimeFormat(getContext()).format(new Date(calendar.getTimeInMillis())));
Run Code Online (Sandbox Code Playgroud)
我只是不喜欢这样的暗示扩张.感觉不干净或使用android%s范例.
我将开始挖掘listPreference代码,看看我如何将它添加到dialogPreference.任何想法/先发制人都会很棒!
谢谢!
对不起我的英语不好.我正在编写一个代码来连接到另一个Android设备热点.它连接起来了.但是,在我的情况下,热点将没有互联网.现在连接的设备,切换回与互联网的另一个wifi网络.除了我的方式,有没有更好的方法连接到热点?我的代码如下:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
AppCompatButton btnConnect=findViewById(R.id.btnConnect);
btnConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
registerReceiver(mWifiBroadcastReceiver , new IntentFilter("android.net.wifi.STATE_CHANGE"));
EditText eSSID=findViewById(R.id.ssid);
EditText ePassword=findViewById(R.id.password);
String ssid = eSSID.getText().toString();
String key = ePassword.getText().toString();
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = String.format("\"%s\"" , ssid);
wifiConfig.preSharedKey = String.format("\"%s\"" , key);
connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
int netId = wifiManager.addNetwork(wifiConfig);
wifiManager.disconnect();
wifiManager.enableNetwork(netId , true);
wifiManager.reconnect();
}
});
}
Run Code Online (Sandbox Code Playgroud)
接收器是:
private BroadcastReceiver mWifiBroadcastReceiver = new BroadcastReceiver() { …Run Code Online (Sandbox Code Playgroud) 假设我有一个类似的视图结构
<ConstraintLayout>
<CustomViewLayout>
...
...
</CustomViewLayout>
</ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
这是简化的,但我在底部使用上面的内容,我有时ConstraintLayout根据我的CustomViewLayout身高改变底部的高度和底部的高度.我的问题是,如果部分CustomViewLayout被切断,那就是 - 它有点在屏幕之外,因为ConstraintLayout它不够高 - 我不再能够获得正确的"全高".在这种情况下,我总是只看到视图屏幕上的可见部分.
那么如何才能获得部分偏离屏幕的视图的全高?
谢谢!
编辑:
我应该补充一点,我尝试的是一个globalLayoutListener,以及一个customViewLayout.post {}(customViewLayout.height当然通常).但是当视图的一部分位于屏幕之外时,这些都不会测量整个高度.
以下图片是应用https://play.google.com/store/apps/details?id=jp.snowlife01.android.clipboard的窗口.我把它命名为主窗口.
似乎主窗口不是普通窗口.它位于其他窗口的顶部,主窗口无法移动.
当我单击主窗口中的最小化按钮时,将显示一个小点图标,可以移动小点图标,单击小点图标时可以恢复主窗口.
我认为小点图标是一个SYSTEM_ALERT_WINDOW,但主窗口怎么样?
图片
android ×10
java ×6
kotlin ×2
android-room ×1
android-view ×1
appium ×1
cameraapi2 ×1
selenium ×1
string ×1
threetenbp ×1
unit-testing ×1