小编Yar*_*arh的帖子

如何在旋转后正确恢复视图状态

我想手动处理复杂视图的旋转 ,包括恢复支撑位置和大小.在这一刻,我正在尝试这样做onLayout(更好的想法是velcome).有时它运作良好,但通常第一次轮换是错位或没有孩子的视图.

private int oldOrientation = -1;

  /**
   * Override method to configure the dragged view and secondView layout properly.
   */
  @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    Log.e("mylayout", "onLayout " + df.format(new Date(Calendar.getInstance().getTimeInMillis())));
    if (isInEditMode()) {
      super.onLayout(changed, left, top, right, bottom);
    } else {
      dragView.setVisibility(INVISIBLE);
      if (isDragViewAtTop() && (oldOrientation != getResources().getConfiguration().orientation || oldOrientation == -1)) {
        dragView.layout(left, top, right, transformer.getOriginalHeight());
        secondView.layout(left, transformer.getOriginalHeight(), right, bottom);
        ViewHelper.setY(dragView, top);
        ViewHelper.setY(secondView, transformer.getOriginalHeight()); …
Run Code Online (Sandbox Code Playgroud)

android android-view

6
推荐指数
1
解决办法
410
查看次数

如何在 Android Room 中加入同一对象的多个实例?

注意:我不能使用关系,因为我们有性能问题,这在直接连接查询中没有重现。

直到我添加target user和来自group user和对应

LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_target_user
LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_from_group_user
Run Code Online (Sandbox Code Playgroud)

它运作良好。但是添加后,我无法弄清楚如何在查询中映射这些前缀。

class ReadMessageEntity(
  @Embedded
  var message: MessageEntity,
  @Embedded
  var block: BlockEntity?,
  @Embedded
  var user: ChatUserRelationEntity,
  @Embedded(prefix = "target_user_")
  var targetUser: ChatUserEntity?,
  @Embedded(prefix = "from_group_user_")
  var fromGroupUser: ChatUserEntity?
)
Run Code Online (Sandbox Code Playgroud)

这是我试图查询的:

  @Transaction
  @Query("""
    SELECT * FROM message_item 
    LEFT JOIN block_item ON block_item.block_message_id = message_item.message_local_id
    LEFT JOIN chat_user_relation ON chat_user_relation.chat_user_id = message_item.message_user_id
    LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_target_user
    LEFT JOIN …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-room

5
推荐指数
1
解决办法
371
查看次数

Otto在viewpager中抛出了"对象已经注册"onResume

我在viewpager中有2个片段.当应用程序暂停时(按主页按钮,或低于其他应用程序)然后恢复,otto throw

 E/stack: task on pause
 E/stack: note on pause
 E/stack: onPause
 E/stack: onResume
 E/stack: task on resume
 E/stack: note on resume
 E/AndroidRuntime: FATAL EXCEPTION: main
 E/AndroidRuntime: java.lang.RuntimeException: Unable to resume activity {yarh.bigdig.bigdigtaskmanager/yarh.bigdig.bigdigtaskmanager.view.activity.SplashScreenActivity}: java.lang.IllegalArgumentException: Object already registered.
 E/AndroidRuntime:     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2575)
 E/AndroidRuntime:     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2603)
 E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
 E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99)
 E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137)
 E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4745)
 E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
 E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511)
 E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
 E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
 E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
 E/AndroidRuntime:  Caused by: java.lang.IllegalArgumentException: Object already registered.
 E/AndroidRuntime: …
Run Code Online (Sandbox Code Playgroud)

android android-fragments otto

4
推荐指数
1
解决办法
2366
查看次数

如何检查向上按钮是否启用?

我在代码中添加的一些地方

ActionBar ab = ((AuthActivity) getActivity()).getSupportActionBar();
    if (ab != null) {
      ab.hide();
      ab.show();
      ab.setTitle(R.string.auth_tt_title);
      ab.setDisplayHomeAsUpEnabled(true);
    }
Run Code Online (Sandbox Code Playgroud)

后来,我添加了一些片段,其中一个片段可能会更改标题并显示主页按钮。因此,我需要在进行更改之前为 ActionBar 保存状态,以便在片段消失后能够恢复它。我可以得到标题

private String getAbStatus(AppCompatActivity activity) {
    String title="";
    boolean visible;
    ActionBar ab = activity.getSupportActionBar();
    if (ab != null) {
      if (ab.getTitle() != null) title = ab.getTitle().toString();
    }
    return title;
  }
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能获得 HomeAsUp 的状态?

android android-fragments android-toolbar

4
推荐指数
1
解决办法
535
查看次数

如何完成几个SingleInstance活动?

我在launchMode SingleInstance中有几个活动.注销时我想完成所有活动并打开launchScreen.

val intent = Intent(context, LauncherActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
(context as AppCompatActivity).finishAffinity()
context.startActivity(intent)
Run Code Online (Sandbox Code Playgroud)

但是,如果我按回Launcher活动,我会转发到以前启动的具有singleInstance模式的活动

android kotlin back-stack

4
推荐指数
1
解决办法
532
查看次数

如何替换Google云端硬盘中的文件?

使用以下代码(取自android-quickstart),如果您拍摄多张照片,此代码可以生成多个具有相同名称的文件.如何修改以确保替换具有相同名称的文件?

public class MainActivity extends Activity implements ConnectionCallbacks,
        OnConnectionFailedListener {

    private static final String TAG = "android-drive-quickstart";
    private static final int REQUEST_CODE_CAPTURE_IMAGE = 1;
    private static final int REQUEST_CODE_CREATOR = 2;
    private static final int REQUEST_CODE_RESOLUTION = 3;

    private GoogleApiClient mGoogleApiClient;
    private Bitmap mBitmapToSave;

    /**
     * Create a new file and save it to Drive.
     */
    private void saveFileToDrive() {
        // Start by creating a new contents, and setting a callback.
        Log.i(TAG, "Creating new contents.");
        final Bitmap image …
Run Code Online (Sandbox Code Playgroud)

android google-drive-api

3
推荐指数
1
解决办法
1762
查看次数

startActivityForResult(...) 立即返回 0

当我调用startActivityForResult(new Intent(getActivity(), VkAuth.class), VK_ID);三星时(在 HTC 和 Nexus 上一切正常),onActivityResult在创建 VkAuth 活动之前调用 requestCode == VK_ID 和结果代码 0(已取消)。
父 Activity 具有android:launchMode="singleInstance". startActivityForResult从附加到父 Activity 的 Fragment 调用。日志

E/AuthenticationFragment: vkLogIn
E/AuthenticationFragment: startActivityForResult 9101
E/AuthenticationFragment: onPause
E/MainActivity: onPause
E/MainActivity: onActivityResult before super: request - 271245, result - 0
E/AuthenticationFragment: request - 9101, result - 0
E/MainActivity: onActivityResult after super: request - 271245, result - 0
E/AuthenticationFragment: onPause
E/MainActivity: onPause
E/VkAuth: onCreate
E/VkAuth: onResume
Run Code Online (Sandbox Code Playgroud)

android android-intent startactivityforresult

3
推荐指数
1
解决办法
1159
查看次数

为什么链式可变状态不更新?

dialdValue 的值永远不会更新。它总是具有值“A” 如何正确链接 mutableStates?

@Composable
fun DropDownDemo() {
    var expanded by remember { mutableStateOf(false) }
    val items = listOf("A", "B", "C", "d", "E", "F")
    var selectedIndex by remember { mutableStateOf(0) }
    var disabledValue by remember { mutableStateOf(items[selectedIndex]) }
    Log.e("mcheck", "$selectedIndex $disabledValue")
    Box(
        modifier = Modifier
            .fillMaxSize()
            .wrapContentSize(Alignment.TopStart)
    )
    {
        Text(
            items[selectedIndex],
            modifier = Modifier
                .fillMaxWidth()
                .clickable(onClick = { expanded = true })
                .background(Color.Gray)
        )
        DropdownMenu(
            expanded = expanded,
            onDismissRequest = { expanded = false },
            modifier = Modifier
                .fillMaxWidth()
                .background(Color.Red) …
Run Code Online (Sandbox Code Playgroud)

android-jetpack-compose

3
推荐指数
1
解决办法
206
查看次数

如何在一行中保存字符串?

我有几个字符串:a,b,c,d,e.我想将它们保存为文件FILENAME作为单个字符串 a b c d:e.问题 - 我需要保持d;e从新行开始的信息.

String str = a
        + " "
        + b

        + c
        + "\n "
        + d
        + ";"
        + e + "\r\n";
try {
    fos = openFileOutput(FILENAME, Context.MODE_APPEND);
    fos.write(str.getBytes());
    fos.flush();
    fos.close();
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java string io android

1
推荐指数
1
解决办法
150
查看次数

如何只调用ListPreference对话框?

在偏好活动中,我支持从xml列出首选项

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  <ListPreference
      android:key="lang"
      android:title="@string/LangTitle"
      android:summary="@string/LangSummary"
      android:defaultValue="en"

      android:entries="@array/entries_lang"
      android:entryValues="@array/entryvalues_lang"
      android:dialogTitle="@string/LangDialogTitle"
      />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

首先显示设置为tittle和description的首选项屏幕.当我点击它时,会显示带有可用选项的对话框.
有没有办法只显示该对话框?是否直接打电话给它?

android

1
推荐指数
1
解决办法
1112
查看次数