小编Raf*_*l T的帖子

python getoutput()在子进程中的等价物

我想从像一些shell命令得到的输出ls或者df在Python脚本.我看到它commands.getoutput('ls')已被弃用,但subprocess.call('ls')只会给我返回代码.

我希望有一些简单的解决方案.

python shell command subprocess

60
推荐指数
3
解决办法
8万
查看次数

如何引用具有多个边界的泛型返回类型

我最近看到可以声明一个也受接口限制的返回类型.考虑以下类和接口:

public class Foo {
    public String getFoo() { ... }
}

public interface Bar {
    public void setBar(String bar);
}
Run Code Online (Sandbox Code Playgroud)

我可以声明一个这样的返回类型:

public class FooBar {
    public static <T extends Foo & Bar> T getFooBar() {
        //some implementation that returns a Foo object,
        //which is forced to implement Bar
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我调用该方法从什么地方,我的IDE告诉我,在返回类型的方法String getFoo(),以及setBar(String),但只有当我点了后面的点功能如下:

FooBar.getFooBar(). // here the IDE is showing the available methods.
Run Code Online (Sandbox Code Playgroud)

有没有办法获得对这样一个对象的引用?我的意思是,如果我做这样的事情:

//bar only has the method setBar(String)
Bar bar = FooBar.getFooBar(); …
Run Code Online (Sandbox Code Playgroud)

java generics interface multiple-inheritance

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

如何用装饰器类装饰实例方法?

考虑这个小例子:

import datetime as dt

class Timed(object):
    def __init__(self, f):
        self.func = f

    def __call__(self, *args, **kwargs):
        start = dt.datetime.now()
        ret = self.func(*args, **kwargs)
        time = dt.datetime.now() - start
        ret["time"] = time
        return ret

class Test(object):
    def __init__(self):
        super(Test, self).__init__()

    @Timed
    def decorated(self, *args, **kwargs):
        print(self)
        print(args)
        print(kwargs)
        return dict()

    def call_deco(self):
        self.decorated("Hello", world="World")

if __name__ == "__main__":
    t = Test()
    ret = t.call_deco()
Run Code Online (Sandbox Code Playgroud)

打印

Hello
()
{'world': 'World'}
Run Code Online (Sandbox Code Playgroud)

为什么self参数(应该是Test obj实例)不作为第一个参数传递给装饰函数decorated

如果我手动完成,例如:

def call_deco(self):
    self.decorated(self, "Hello", …
Run Code Online (Sandbox Code Playgroud)

python class self python-decorators

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

在Android中显示巨大的图像

我打算在Android中显示非常大的图像.

我的第一个解决方案 - 以pdf格式提供它们 - 失败了,因为并非所有掌上电脑都预装了pdf-viewer,我不想要求用户安装一个.

所以我现在要显示一个png (宽度= 3998px高度= 2827px).我下载了这张图片来测试它将如何显示在图库中.这真是太痛苦了.似乎galery只渲染了这张照片一次,如果我放大,我根本无法读取文字.

所以我写了一个testActivity,它只是一个嵌套在LinearLayout中的ImageView.我将图像放入drawable并将其设置为ImageView的图像源.不幸的是,应用程序立即崩溃,因为"

 ERROR/AndroidRuntime(8906): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget"  
Run Code Online (Sandbox Code Playgroud)

我没想到一张图片可能太大了VM's memory.我玩了一下,设置ImageViews尺寸3998 & 2827px,把图像放到sdCard手动读取它fileInputStream.
令我惊讶的是,它现在显示了我的图像,但如果我将Nexus S水平转动,我会OutOfMemoryError像以前一样.

有人能指出通过a接收位图FileInputStream或将其设置为ImageView's源之间的主要区别.

此外,我无法滚动舒适的双亲,scrollViews

我搜索一个简单的解决方案,一次显示ONE large image,scroll horizontal and vertical同时能够放大和缩小.

这是我想要显示的图像的示例 在此输入图像描述

memory png android image view

29
推荐指数
3
解决办法
3万
查看次数

Android onActivityResult未调用/触发

我阅读了很多关于问题的内容onActivityResult,但似乎没有任何描述的问题适合我的,比如将负的requestCode放入startActivityForResult其他内容中.

我在我的Activity中使用相机,它将预览流式传输到SurfaceView.拍照后,我关闭凸轮释放其资源,打电话setResult(RESULT_OK, DataIntent)并希望onActivityResult在我的父母中触发.

但事实并非如此.如果我onCreate在子Activity中设置了一个结果并在onCreate中完成了子节点,则结果不会传递给onActivityResult.

可能的原因onActivityResult什么不被触发?我会写下我的一些资料来了解我正在做的事情......

public class MainActivity extends Activity {
    Button mButtonScan;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mButtonScan = (Button)findViewById(R.id.main_btn_scan);
    }

    /**
    * OnClick Event called from main.xml
    * @param v View that called that onClickEvent
    */
    public void btnCaptureClick(View v) {
        Intent intent = new Intent(this, CaptureActivity.class);
        startActivityForResult(intent, Constants.REQUEST_CODE_CAPTURE);
    }

    /**
    * …
Run Code Online (Sandbox Code Playgroud)

android

27
推荐指数
6
解决办法
4万
查看次数

一般用Java覆盖一个方法

如果我有这样的基类,我无法改变:

public abstract class A {
    public abstract Object get(int i);
}
Run Code Online (Sandbox Code Playgroud)

我尝试用这样的类来扩展它B:

public class B extends A{
    @Override
    public String get(int i){
        //impl
        return "SomeString";
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都好.但是如果我尝试的话,我试图让它更通用的失败:

public class C extends A{
    @Override
    public <T extends Object> T get(int i){
        //impl
        return (T)someObj;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想不出有什么理由不应该被禁止.根据我的理解,泛型类型T绑定到Object- 这是请求的返回类型A.如果我可以把StringAnyObject作为我的回归类型B,我为什么不被允许<T extends Object> T进入我的C班级?

从我的观点来看,另一个奇怪的行为是这样的另一种方法:

public class D extends A{

    @Override
    public Object get(int …
Run Code Online (Sandbox Code Playgroud)

java generics overriding casting type-conversion

23
推荐指数
2
解决办法
5516
查看次数

来自Fragments的`onViewStateRestored`如何工作?

我真的很困惑片段的内部状态.如果另一个Fragment应该显示,我有一个Activity只能同时保存一个Fragment并替换它.如果onSaveInstanceState调用Activitys (在我的情况下不调用),则调用docs onSaveInstanceState.

如果我停止我的片段,我会将自己的状态存储在一个单身人士中(是的,我知道我也讨厌单身人士,但这不是我的想法).所以我必须重新创建整个ViewHirarchy,创建新的视图(通过使用关键字new),恢复其状态并将其返回onCreateView.我也有这种说法,从我做明确里面一个复选框希望存储的状态.

然而,FragmentManager想要"智能"并且onViewStateRestored使用Bundle 调用我从未创建过自己,并"恢复"旧状态CheckBox并将其应用于我的新CheckBox.这引发了很多问题:

我可以控制捆绑onViewStateRestored吗?

FragmentManager如何获取(可能是垃圾收集的)CheckBox的状态并将其应用于新的CheckBox?

为什么它只保存Checkbox的状态(不是TextViews ??)

总结一下:onViewStateRestored工作怎么样?

注意我正在使用Fragmentv4,因此不需要API> 17 onViewStateRestored

viewstate android restore fragment android-fragments

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

在python中的List中通过其成员查找对象

让我们假设以下简单的对象:

class Mock:
    def __init__(self, name, age):
        self.name = name
        self.age = age
Run Code Online (Sandbox Code Playgroud)

然后我有一个包含这样的对象的列表:

myList = [Mock("Dan", 34), Mock("Jack", 30), Mock("Oli", 23)...]
Run Code Online (Sandbox Code Playgroud)

是否有一些内置功能,我可以获得年龄为30岁的所有模拟?当然,我可以对自己进行迭代并比较它们的年龄,但类似于

find(myList, age=30)
Run Code Online (Sandbox Code Playgroud)

会好的.有类似的东西吗?

python search list find

20
推荐指数
4
解决办法
4万
查看次数

不支持方法'getSupportFragmentManager()'

所以我试图为Android版本启用datepicker,因为我正在使用支持库v4.我导入了所有必要的东西:

import android.support.v4.app.*;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.DialogFragment;
Run Code Online (Sandbox Code Playgroud)

我创建了一个类:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.EditText;
public class DatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener  {

public EditText textField;  

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}


public EditText getTextField() {
return textField;
}


public …
Run Code Online (Sandbox Code Playgroud)

android datepicker

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

将位图保存到文件中并返回具有位图图像的文件

我有一个问题是将位图保存到文件中.我的方法是这样的:

private File savebitmap(Bitmap bmp) {
    String extStorageDirectory = Environment.getExternalStorageDirectory()
            .toString();
    OutputStream outStream = null;

    File file = new File(bmp + ".png");
    if (file.exists()) {
        file.delete();
        file = new File(extStorageDirectory, bmp + ".png");
        Log.e("file exist", "" + file + ",Bitmap= " + bmp);
    }
    try {
        outStream = new FileOutputStream(file);
        bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream);
        outStream.flush();
        outStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    Log.e("file", "" + file);
    return file;

}
Run Code Online (Sandbox Code Playgroud)

它给了我file的错误.我这样调用这个方法:

Drawable d = iv.getDrawable();
Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
File …
Run Code Online (Sandbox Code Playgroud)

android

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