小编Mik*_*keL的帖子

循环浏览Android视图的所有子视图?

我正在为Android开发游戏.为了帮助实现它,我的想法是创建一个视图的子类.然后我会插入此类的几个实例作为主视图的子项.每个实例都会处理它被按下的时间(通过OnTouchListener).

我现在遇到的问题是如何遍历所有这些子视图,以便我可以读取它们的状态并处理它们?(即当他们都达到某种状态时应该发生的事情).

或者,是否有更好的方法可以在屏幕上显示多个响应触摸的对象以及我可以检查其状态?

android view viewgroup android-viewgroup

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

空活动的setContentView上的StrictMode磁盘读取违规

我最近尝试使用StrictMode但有一个奇怪的侵犯,所以我尝试建立一个新的 "空活动"项目(在Android Studio),并添加如下(中记载的应用程序类在这里):

public class TestApplication extends Application {

    @Override
    public void onCreate() {
        setStrictMode();
        super.onCreate();

    }

    private void setStrictMode() {
        if (BuildConfig.DEBUG) {
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                    .detectAll()
                    .penaltyLog()
                    .build());
            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这个空项目中遇到同样的问题:
StrictMode policy violation; ~duration=165 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65599 violation=2

堆:

at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1440)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:241)
at java.io.File.isDirectory(File.java:837)
at dalvik.system.DexPathList$Element.toString(DexPathList.java:634)
at java.lang.String.valueOf(String.java:2827)
at java.util.Arrays.toString(Arrays.java:4511)
at dalvik.system.DexPathList.toString(DexPathList.java:194)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:606) …
Run Code Online (Sandbox Code Playgroud)

android oncreate android-instant-run android-strictmode

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

使用Intent.createChooser使用Waze和Google Maps进行导航会显示两次Waze图标

我在找到答案后创建了这个问题,我不确定礼仪,但似乎没问题(另外,我现在看到有一个内置选项).

问题如标题中所述,我们使用类似于此的代码创建了一个意图选择器:

String url = "waze://?ll=" + latitude + ", " + longitude + "&navigate=yes";
Intent intentWaze = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

String uriGoogle = "google.navigation:q=" + latitude + "," + longitude;
Intent intentGoogleNav = new Intent(Intent.ACTION_VIEW, Uri.parse(uriGoogle));

String title = context.getString(R.string.title);
Intent chooserIntent = Intent.createChooser(intentGoogleNav, title);
Intent[] arr = new Intent[1];
arr[0] = intentWaze;
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arr);
context.startActivity(chooserIntent);
Run Code Online (Sandbox Code Playgroud)

并获得两个Waze图标和一个Google Maps图标; 更糟糕的是,其中一个Waze图标没有启动导航(只打开应用程序).

我们无法使用geo:意图,因为我们需要控制显示的意图(我们不想一直显示两个意图)和谷歌地图中的导航类型(例如:) &mode=w.

android google-maps android-intent-chooser waze

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

标语-是否有内置视图?

有一个现有的ViewAndroid一个旗帜?还是我需要使用规格自己打造?
需要明确的是,这不是用于广告,而是用于的Material-Design概念Banner

android view android-view material-design

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

Android DrawerLayout-具有Gravity.Start的openDrawer会产生皮棉错误“必须为...中的一个或多个”

我已经创建了一个DrawerLayout,并且还有一个ImageView(“汉堡”)可以在单击时将其打开。
我的问题是,使用以下代码时,AndroidStudio中会显示lint错误:Must be one or more of: Gravity.LEFT, Gravity.RIGHT...,那里没有任何错误Gravity.START

ImageView openDrawerImageView = findViewById(R.id.open_drawer_image_icon);
openDrawerImageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        drawerLayout.openDrawer(Gravity.START);
    }
});
Run Code Online (Sandbox Code Playgroud)

android lint gravity drawerlayout

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

React 原生占位符在 Android 上仅部分可见

我在将 a 居中时遇到问题,TextInput同时保持占位符可见。我希望文本从占位符开始(居中)开始。

在 IOS 上它可以工作,但在 android 上它只是部分可见。

IOS 上的结果: IOS 占位符

android 上的结果: Android 占位符

这是我的代码:

render() {
return (
  <View style={styles.containerStyle}>
    <TextInput
      underlineColorAndroid='transparent'

      placeholder={"Placeholder    "}
      placeholderTextColor={"grey"}
      maxLength={6}
      style={{  fontSize: 30, color: "black",
        justifyContent: "center",  }}
      onChangeText={this.props.onChangeText}
      value={this.props.value.toUpperCase()}
    />
  </View>
);
  }
}

const styles = {
  containerStyle: {
    flexDirection: 'row',
    backgroundColor: "#fff",
    borderRadius: 5,
    borderWidth: 1,
    shadowColor: "#000",
    elevation: 2,
    marginLeft: 5,
    marginRight: 5,
    alignItems: 'center',
    justifyContent: "center"
  }
};
Run Code Online (Sandbox Code Playgroud)

textinput react-native

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

共享首选项在应用程序被终止时不保存 StringSet(这是一项功能)

我一直在加载并将 a 保存Set<String>到 Android 上SharedPreferences,它似乎工作正常,直到我测试了杀死它application并意识到未保存字符串集。

Set<String> stringSet = sharedPreferences.getStringSet(Constants.PREF_SHOULD_LOAD_SET, null);
if (stringSet != null) {
    if (stringSet.contains(data)) {
        stringSet.remove(data);
    } else {
        stringSet.add(data);
    }
    ...
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putStringSet(Constants.PREF_SHOULD_LOAD_SET, stringSet);
    editor.apply();
}
Run Code Online (Sandbox Code Playgroud)

我尝试过的一些事情:

  • 使用提交(而不是应用)
  • 查看其他可能改变价值的地方
  • 调试并查看值是否已保存

android sharedpreferences android-sharedpreferences

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

启用 StrictMode(检测全部)的 Crashlytics 给出“检测到未标记的套接字”

我已经尝试添加Crashlytics到我的应用程序中,该应用程序已经StrictMode启用了detectAll(). 结果是Untagged socket detected; use TrafficStats.setThreadSocketTag() to track all network usage

全栈:

E/StrictMode: null
java.lang.Throwable: Untagged socket detected; use TrafficStats.setThreadSocketTag() to track all network usage
    at android.os.StrictMode.onUntaggedSocket(StrictMode.java:2012)
    at com.android.server.NetworkManagementSocketTagger.tag(NetworkManagementSocketTagger.java:78)
    at libcore.io.BlockGuardOs.tagSocket(BlockGuardOs.java:47)
    at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:310)
    at libcore.io.IoBridge.socket(IoBridge.java:667)
    at java.net.PlainSocketImpl.socketCreate(PlainSocketImpl.java:116)
    at java.net.AbstractPlainSocketImpl.create(AbstractPlainSocketImpl.java:98)
    at java.net.Socket.createImpl(Socket.java:484)
    at java.net.Socket.getImpl(Socket.java:547)
    at java.net.Socket.setSoTimeout(Socket.java:1175)
    at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:139)
    at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
    at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
    at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
    at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
    at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
    at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:538)
    at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
    at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(Unknown Source:0)
    at io.fabric.sdk.android.services.network.HttpRequest.code(HttpRequest.java:1357) …
Run Code Online (Sandbox Code Playgroud)

android crashlytics-android android-strictmode

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

我无法在 React Native 应用程序中访问外部存储中的内容

我正在使用react-native-fs构建一个类似应用程序的媒体播放器,但我无法访问项目文件夹之外的目录,我添加了以下权限:

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />   
Run Code Online (Sandbox Code Playgroud)

我还使用以下代码检查读写权限:

    PermissionsAndroid.check(
      PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
    ).then(granted => {
      if (!granted) {
        PermissionsAndroid.requestMultiple([
          PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
          PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
        ]).then(result => {
          console.log(result);
        });
      }
    });
Run Code Online (Sandbox Code Playgroud)

RNFS.readDir() 抛出 null 错误:

  const path = RNFS.ExternalStorageDirectoryPath;
  RNFS.readDir(path).then(result => {
    console.log('GOT RESULT', result);
  });
Run Code Online (Sandbox Code Playgroud)

抛出的错误是:

[Error: Attempt to get length of null array]
Run Code Online (Sandbox Code Playgroud)

android react-native react-native-fs

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