小编Ram*_*oti的帖子

从非活动单例类中获取应用程序上下文

在我的android项目中,我有ImageAdapter类,我在其中传递应用程序上下文以满足其他需求.

public class ImageAdapter extends BaseAdapter {
    private Context c;

    public ImageAdapter(Context c) {
            this.c = c;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题是我想让ImageAdapter成为一个单例,以便从我的所有活动中轻松访问这个类的实例.但是我不知道如何将getApplicationContext()方法中的app context从我的一个活动传递给ImageAdapter.所以有没有"神奇"做到这一点如下?

public class ImageAdapter extends BaseAdapter {

    private Context c;

    private static class Holder {
            public static final ImageAdapter IA = new ImageAdapter();
    }

    private ImageAdapter() {
            this.c = /* some magic here */.getApplicationContext();
    }

    public static ImageAdapter getInstance() {
            return Holder.IA;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

也许你有一些其他的想法,可以为我的任何活动分享ImageAdapter.我是android的新手,我对在活动中传递数据的方式有点困惑.

我将不胜感激任何帮助.

java singleton android android-context baseadapter

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

无法在android中强制转换为com.google.android.gms.location.LocationListener异常

我在我的应用程序中遇到异常,该异常与android中的com.google.android.gms.location.LocationListner有关,请在这方面帮助我

我的MainActivity.java文件:

package com.ideabiz.fusedlocationprovider;

import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;


public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener, LocationListener {


TextView txtOutputLat, txtOutputLon;
Location mLastLocation;
private GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;
String lat, lon;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    txtOutputLat = (TextView) findViewById(R.id.textView);
    txtOutputLon = (TextView) findViewById(R.id.textView2);


    buildGoogleApiClient();
}


@Override
public void onConnected(Bundle …
Run Code Online (Sandbox Code Playgroud)

java android android-studio

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

在AWS lambda函数中两次获取日志

我正在尝试创建一个集中模块来设置我的日志格式化程序,以便在我的lambda函数中的多个python模块之间共享.此功能最终将在本地内部部署设备上的AWS Greengrass上运行.

出于某种原因,当我添加自己的处理程序来格式化消息时,日志将被输出两次 - 一次是在正确的日志级别,第二次是在错误的级别.

如果我使用标准的python记录器而不设置任何处理程序,它可以正常工作,例如

main.py:

import logging

logging.debug("test1")
Run Code Online (Sandbox Code Playgroud)

cloudwatch logs:

12:28:42 [DEBUG]-main.py:38,test1
Run Code Online (Sandbox Code Playgroud)

我的目标是在我的代码上有一个格式化程序,它将这些日志消息格式化为JSON.然后它们将被摄入集中式日志记录数据库.但是,当我这样做时,我得到两次日志消息.

loghelper.py:

def setup_logging(name):

    formatter = logging.Formatter("%(name)s, %(asctime)s, %(message)s")

    handler = logging.StreamHandler(sys.stdout)
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)

    if logger.handlers:
        for handler in logger.handlers:
            logger.removeHandler(handler)

    logger.setLevel(logging.DEBUG)
    logger.addHandler(handler)
    return logger
Run Code Online (Sandbox Code Playgroud)

main.py:

import logging

logger = loghelper.setup_logging('main.test_function')

def test_function():
    logger.debug("test function log statement")

test_function()
Run Code Online (Sandbox Code Playgroud)

现在运行lambda函数时,我在云监视日志中收到两次调试消息,如下所示:

cloudwatch logs:

12:22:53 [DEBUG]-main.py:5, test function log statement
12:22:53 [INFO]-__init__.py:880,main.test_function,2018-06-18 12:22:53,099, test function log statement
Run Code Online (Sandbox Code Playgroud)

请注意:

  • 第一个条目处于正确的级别,但格式错误.
  • 第二个条目报告错误的级别,错误的模块但格式正确.

我无法解释这种行为,并会对可能导致这种行为的任何想法表示感谢.我也不知道第880行存在哪个构造函数.这可能会对正在发生的事情有所了解.

参考文献: …

python logging amazon-web-services aws-lambda greengrass

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

如何使用 github 页面修复 manifest.json 404

我正在使用 Create-React-App 开发渐进式 Web 应用程序,当我部署到 Github Pages 时,我得到了 android-chrome-192x192.png 的 404 错误。清单似乎是从“myName.github.io/”而不是“myName.github.io/myProject/”请求它。当我在文件路径中添加项目名称时,我的开发服务器上出现错误,提示图像不存在!所有其他图标都工作正常,问题似乎仅与 192x192 png 有关。如果有人遇到同样的问题,我将不胜感激,非常感谢!

这是该网站的实时版本,有错误:https://brose55.github.io/robofriends/

这是使用 Create-React-App 制作并部署到 Github Pages 的 PWA。我尝试更改文件路径,但没有任何效果。

"icons": [
{
  "src": "favicon.ico",
  "sizes": "64x64 32x32 24x24 16x16",
  "type": "image/x-icon"
},
    {
        "src": "/android-chrome-192x192.png",
        "sizes": "192x192",
        "type": "image/png"
    },
    {
        "src": "/android-chrome-384x384.png",
        "sizes": "512x512",
        "type": "image/png"
    }
],
Run Code Online (Sandbox Code Playgroud)

预期请求来自 ...github.io/robofriends,但实际上来自 ...github.io/

lighthouse github-pages create-react-app

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

什么是iOS中的SearchPathDomainMask和SearchPathDirectory

我正在尝试了解iOS和macOS文件系统

但是SearchPathDomainMask和SearchPathDirectory让我非常困惑

let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我认为这个URL是用户域中记录的目录路径

如果本地域中有文档目录,这段代码可能吗?

let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .localDomainMask)
Run Code Online (Sandbox Code Playgroud)

SearchPathDirectory只是枚举知名文件URL吗?

域掩码或域的目的是什么

directory file nsfilemanager ios swift

5
推荐指数
0
解决办法
258
查看次数

SuppressionCommentFilter 不允许作为 Checker 中的子项”

错误:无法解析 Checkstyle 规则文件。SuppressionCommentFilter 不允许作为 Checker 中的子文件 60 年代的文件已被列入黑名单。

注意:我使用的 Checkstyle 版本是 7.1.2。

这是一个看起来完全有效的配置,

<module name="Checker">
  <property name="severity" value="warning" />
  <module name="TreeWalker">
    ...
  </module>
  ...
  <module name="SuppressWarningsFilter" />
  <module name="SuppressionFilter">
    <property name="file" value="${config_loc}/suppressions.xml"/>
  </module>
  <module name="SuppressionCommentFilter">
    <property name="checkC" value="false" />
  </module>
  ...
</module>
Run Code Online (Sandbox Code Playgroud)

suppress-warnings intellij-plugin intellij-14 maven-checkstyle-plugin

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

内联子例程perl

我有一个Perl函数,该函数不返回任何值。它也不需要任何参数。

sub test {
    #do my logic
}
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

sub test() {
    #do my logic
}
Run Code Online (Sandbox Code Playgroud)

子例程测试会内联吗?这样行吗?(这意味着函数调用将被函数定义替换。我的程序执行得更快吗?)

函数test()被调用5000次。而且我的Perl程序执行时间比预期的要长。所以我想让我的程序更快。提前致谢!

optimization perl inline subroutine

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

Azure存储get_blob_to_stream无法将已保存的csv文件下载为流

我想将存储在Azure存储中的CSV文件下载到流中,并直接在我的python脚本中使用,但是在Thomas的帮助下完成此操作后,我无法使用pandas read_csv方法,错误消息为:pandas.io.common。 EmptyDataError:没有要从文件中解析的列,因此我假设下载的CSV流实际上是空的,但是签入存储帐户后,CSV文件中的所有数据都可以使用,这是什么问题?以下是Thomas的代码:

from azure.storage.blob import BlockBlobService
import io
from io import BytesIO, StringIO
import pandas as pd
from shutil import copyfileobj
with BytesIO() as input_blob:
     with BytesIO() as output_blob:
    block_blob_service = BlockBlobService(account_name='my account', account_key='mykey')

    block_blob_service.get_blob_to_stream('my counter', 'datatest1.csv', input_blob)

    df=pd.read_csv(input_blob)
    print(df)

    copyfileobj(input_blob, output_blob)

    #print(output_blob)

    # Create the a new blob
    block_blob_service.create_blob_from_stream('my counter', 'datatest2.csv', output_blob)
Run Code Online (Sandbox Code Playgroud)

如果我不执行read_csv代码,则create_blob_from_stream将创建一个空文件,但是如果我执行read_csv代码,则会出现错误:

pandas.parser.TextReader。CINIT(熊猫\ parser.c:6171)pandas.io.common.EmptyDataError:没有列从文件解析

the download file stored fine in the blob storage with all data in it. as showing below:
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python io azure-storage-blobs pandas

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

RewardVideoListener不是抽象的,并且不会覆盖RewardedVideoAdListener中的抽象方法onRewardedVideoCompleted()

//这是我的代码

package name.ratson.cordova.admob.rewardvideo;

import android.util.Log;

import com.google.android.gms.ads.reward.RewardItem;
import com.google.android.gms.ads.reward.RewardedVideoAdListener;

import org.json.JSONException;
import org.json.JSONObject;

import name.ratson.cordova.admob.AbstractExecutor;

class RewardVideoListener implements RewardedVideoAdListener {
private final RewardVideoExecutor executor;

RewardVideoListener(RewardVideoExecutor executor) {
    this.executor = executor;
}

@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
    synchronized (executor.rewardedVideoLock) {
        executor.isRewardedVideoLoading = false;
    }

    JSONObject data = new JSONObject();
    try {
        data.put("error", errorCode);
        data.put("reason", AbstractExecutor.getErrorReason(errorCode));
        data.put("adType", executor.getAdType());
    } catch (JSONException e) {
        e.printStackTrace();
    }
    executor.fireAdEvent("admob.rewardvideo.events.LOAD_FAIL", data);
}

@Override
public void onRewardedVideoAdLeftApplication() {
    JSONObject data = new JSONObject();
    try {
        data.put("adType", …
Run Code Online (Sandbox Code Playgroud)

admob ionic-framework

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

NotifyDataSetChanged在我的代码中不起作用

adapter.notifyDataSetChanged(); 我没有在android中工作我正在检索for循环中的值,但值没有显示在屏幕上.我的java文件:

private static final String TAG_NAME="Notification";
String[] resultsAsString = {""};
ListView listView;
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, resultsAsString);
    ParseQuery<ParseObject> parseObjectParseQuery=new ParseQuery<ParseObject>("PushNotifications");
    parseObjectParseQuery.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if (e==null){
                resultsAsString = new String[objects.size()];
                Log.d(TAG_NAME,"Objects size in MyService is:"+objects.size());

                if(objects.size()>0){
                    Log.d(TAG_NAME,"Object size is "+objects.size());
                    for(int index = 0; index < objects.size(); index++){
                        resultsAsString[index] = objects.get(index).getString("Message");
                        Log.d(TAG_NAME,"result value is:"+resultsAsString[index]);
                    }
                    adapter.notifyDataSetChanged();
                }else {
                    Log.d(TAG_NAME,"Object size is "+objects.size());
                }
            }
        }
    });
listView = (ListView) …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter

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