小编L3n*_*n95的帖子

ANR 输入调度超时(ActivityRecord 没有焦点窗口)

我收到了一份 ANR 崩溃报告,其“标题”如下:

Input dispatching timed out (ActivityRecord{abcdefg com.mypackage/.my.subpackage.MyActivity t3125} does not have a focused window)

主线程的堆栈跟踪如下所示:

  #00  pc 000000000009ca68  /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
  #00  pc 0000000000019d88  /system/lib64/libutils.so (android::Looper::pollInner(int)+184)
  #00  pc 0000000000019c68  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
  #00  pc 0000000000112174  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
  at android.os.MessageQueue.nativePollOnce (Native method)
  at android.os.MessageQueue.next (MessageQueue.java:335)
  at android.os.Looper.loop (Looper.java:183)
  at android.app.ActivityThread.main (ActivityThread.java:7700)
  at java.lang.reflect.Method.invoke (Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:612)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:997)
Run Code Online (Sandbox Code Playgroud)

所有其他线程的堆栈跟踪都不包含我的应用程序的任何代码。

不幸的是,我找不到有关此类 ANR 的任何信息。此处在 SO 或其他地方描述的所有 ANR 的标题都是“正在等待,因为没有窗口具有焦点……”或“正在等待发送非键事件,因为……”。有谁知道 ANR 是什么意思,也许我应该在哪里搜索问题?

android android-anr-dialog android-activity

21
推荐指数
0
解决办法
3431
查看次数

完成对话框类中的活动

在我的MainActivity电话里

 myDialog dialog = new myDialog(MainActivity.this);
 dialog.show();
Run Code Online (Sandbox Code Playgroud)

myDialog是我自己的类,我自定义对话框.在对话框中是一个按钮.我希望MainActivity按下按钮时对话框完成/消失,因为我启动了另一个Activity.我怎么能在myDialog课堂上onClickListener说,MainActivity应该finish()呢?

缩短我对话框的代码:

public class myDialog extends Dialog implements OnClickListener {

    void onClick() {
        Intent menu = new Intent(getContext(), menu.class);
        getContext().startActivity(menu);
    }
}
Run Code Online (Sandbox Code Playgroud)

android dialog activity-finish

11
推荐指数
2
解决办法
2万
查看次数

将时间序列转换为图像矩阵

我有一个时间序列的 numpy 数组 X。类似的东西:

[[0.05, -0.021, 0.003, 0.025, -0.001, -0.023, 0.095, 0.001, -0.018]
[0.015, 0.011, -0.032, -0.044, -0.002, 0.032, -0.051, -0.03, -0.020]
[0.04, 0.081, -0.02, 0.014, 0.063, -0.077, 0.059, 0.031, 0.025]]
Run Code Online (Sandbox Code Playgroud)

我可以用

fig, axes = plt.subplots(3, 1)
for i in range(3):
    axes[i].plot(X[i])
plt.show()
Run Code Online (Sandbox Code Playgroud)

然后会出现类似下面的内容(这些图没有显示我上面写的演示值,而是具有类似结构的其他值)。所以 X 中的每一行都是一个时间序列。 在此处输入图片说明

但是我想要一个 numpy 数组,它将每个时间序列描述为灰度图像(因为我想稍后将它用于 cnn)。所以我认为我需要的应该是这样的:

[[[0, 0, 0, 0, 0, 1]
[0, 0, 0, 0, 1, 0]
[0, 0, 0, 0, 0, 1]
[0, 0, 1, 0, 0, 0]]
[[0, 0, 1, 0, …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib numpy-ndarray

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

同意请求与 Google AdMob 之间的连接以展示个性化或非个性化广告

我使用 UMP 来获取用户同意。然后我想使用 Google AdMob 展示广告。在 UMP文档中存在“转发同意 Google 移动广告 SDK”部分。据此我可以选择 AdMob 是否应该展示个性化广告或非个性化广告:

Bundle extras = new Bundle();
extras.putString("npa", "1");

AdRequest request = new AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
    .build();
Run Code Online (Sandbox Code Playgroud)

但是,如果用户接受(“同意”)或拒绝(“不同意”)同意书,我如何获取信息?我如何知道是否应该展示个性化广告或非个性化广告?或者我应该在我的应用程序中添加另一个按钮来询问用户想要看到什么样的广告?

我得到的唯一信息UserMessagingPlatform.getConsentInformation是用户是否已经选择了“同意”或“不同意”(如果状态==已获得),但不是他选择的选项。

android admob admob-cookieconsent user-messaging-platform

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

使用和不使用前导零解析DateTime

我有一个TextBox,用户可以在其中键入日期.我只希望以下格式:

12.12.2017
12.02.2017
12.2.2017
02.12.2017
2.12.2017
02.02.2017
2.2.2017
Run Code Online (Sandbox Code Playgroud)

所以可以有一个领先的零或不.

我目前正在使用以下代码解析DateTime:

DateTime myDate = new DateTime();
bool success = DateTime.TryParseExact(TboDate.Text, "dd.MM.yyyy", 
                   CultureInfo.CurrentUICulture, DateTimeStyles.None, out myDate);
Run Code Online (Sandbox Code Playgroud)

12.2.2017无法使用该代码成功解析日期.但我不想每次都检查字符串,然后用匹配的格式解析它d.M.yyyy, dd.M.yyyy, d.MM.yyyy,依此类推.是否有更简单的方法来告诉方法,可以有前导零?

c# datetime date tryparse

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

java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParams无法转换为android.support.v7.widget.RecyclerView $ LayoutParams

我有一个带有LinearLayout的RecyclerView。LinearLayout由9个按钮组成。在进行一些更改之前,我可以单击按钮,并且它没有崩溃。但是在我在下面添加此代码后,它给出了错误,并且没有显示它的来源:

java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParams无法转换为android.support.v7.widget.RecyclerView $ LayoutParams

适配器中的导入:

    import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.widget.LinearLayout.LayoutParams;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
Run Code Online (Sandbox Code Playgroud)

在onClickListener中添加了以下内容:

tempTag = (int) v.getTag();
mAdapter.grayButton(tempTag / 9, tempTag % 9);
zahl1 = Integer.parseInt(mAdapter.getText(tempTag).toString());
Run Code Online (Sandbox Code Playgroud)

在RecyclerView.Adapter中添加了以下方法:

    public void grayButton(int row, int element){
    recycleViewDatas.get(row).setGray(element);
    notifyItemChanged(row);
}
Run Code Online (Sandbox Code Playgroud)

将此代码添加到onBindViewHolder中:

LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
viewHolder.ll.setLayoutParams(lp);
lp.height = viewHolder.ll.getLayoutParams().height - (int) (viewHolder.buttons.get(j).getLayoutParams().height - recycleViewDatas.get(i).getSize()) + 30;
viewHolder.ll.setLayoutParams(lp);
if(recycleViewDatas.get(i).getGray() == j)
     viewHolder.buttons.get(j).setTextColor(Color.GRAY);
else if(recycleViewDatas.get(i).getGray() == -1) …
Run Code Online (Sandbox Code Playgroud)

java android classcastexception android-layout android-recyclerview

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

保存 ScrollViews 位置并稍后滚动回该位置(偏移位置)

我找到了一种用 a和 a保存 ScrollViews偏移量的方法。GeometryReaderPreferenceKey

SwiftUI | 从 ScrollView 获取当前滚动位置

并且有一个滚动到设定位置ScrollViewReader的方法。scrollTo

滚动到

问题是,第一个方法保存偏移量,而第二个方法需要一个位置(或一个 id,与我的情况下的位置类似)。如何将偏移量转换为位置/id 或者是否有其他方法来保存和加载 ScrollViews 位置?

这是我现在拥有的代码,但它没有按照我想要的方式滚动:

ScrollView {
    ScrollViewReader { scrollView in
        LazyVGrid(columns: columns, spacing: 0) {
            ForEach(childObjects, id: \.id) { obj in
                CustomView(obj: obj).id(obj.id)
            }
        }
        .onChange(of: scrollTarget) { target in
            if let target = target {
                scrollTarget = nil
                scrollView.scrollTo(target, anchor: .center)
            }
        }
        .background(GeometryReader {
            Color.clear.preference(key: ViewOffsetKey.self,
                value: -$0.frame(in: .named("scroll")).origin.y)
        })
        .onPreferenceChange(ViewOffsetKey.self) { // …
Run Code Online (Sandbox Code Playgroud)

ios swiftui geometryreader swiftui-scrollview

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

如何在延迟时间后激活(打开键盘)EditText?

我有一个EditText和一个CountDownTimer.通常,如果你使用EditText启动一个Activity,EditText会激活并显示键盘.但我希望Activity启动,计时器关闭,然后键盘自动显示.我怎样才能做到这一点?

new CountDownTimer(5000, 1000) {

         public void onTick(long millisUntilFinished) {
          //Do Something
         }

         public void onFinish() {
             //Keyboard pop up
         }
        }.start();
Run Code Online (Sandbox Code Playgroud)

java keyboard android android-edittext

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

来自Content Provider with Content Provider的Android Intent.ACTION_SEND

我正在内部存储上保存文件.它只是一个.txt文件,其中包含有关对象的一些信息:

    FileOutputStream outputStream;
    String filename = "file.txt";

    File cacheDir = context.getCacheDir();
    File outFile = new File(cacheDir, filename);
    outputStream = new FileOutputStream(outFile.getAbsolutePath());
    outputStream.write(myString.getBytes());
    outputStream.flush();
    outputStream.close();
Run Code Online (Sandbox Code Playgroud)

然后我创建一个"shareIntent"来共享这个文件:

    Uri notificationUri = Uri.parse("content://com.package.example/file.txt");
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.putExtra(Intent.EXTRA_STREAM, notificationUri);
    shareIntent.setType("text/plain");
    context.startActivity(Intent.createChooser(shareIntent, context.getResources().getText(R.string.chooser)));
Run Code Online (Sandbox Code Playgroud)

所选应用程序现在需要访问私有文件,因此我创建了一个内容提供程序.我刚刚更改了openFile方法:

@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
    File privateFile = new File(getContext().getCacheDir(), uri.getPath());
    return ParcelFileDescriptor.open(privateFile, ParcelFileDescriptor.MODE_READ_ONLY);
}
Run Code Online (Sandbox Code Playgroud)

清单:

<provider
        android:name=".ShareContentProvider"
        android:authorities="com.package.example"
        android:grantUriPermissions="true"
        android:exported="true">
    </provider>
Run Code Online (Sandbox Code Playgroud)

打开邮件应用程序以共享它所说的文件时,它无法附加文件,因为它只有0字节.通过蓝牙共享它也失败了.但是我可以privateFile在内容提供商中读出它,因此它存在且具有内容.问题是什么?

android android-contentprovider internal-storage share-intent android-internal-storage

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