我想从像一些shell命令得到的输出ls或者df在Python脚本.我看到它commands.getoutput('ls')已被弃用,但subprocess.call('ls')只会给我返回代码.
我希望有一些简单的解决方案.
我最近看到可以声明一个也受接口限制的返回类型.考虑以下类和接口:
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) 考虑这个小例子:
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) 我打算在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同时能够放大和缩小.
这是我想要显示的图像的示例

我阅读了很多关于问题的内容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) 如果我有这样的基类,我无法改变:
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.如果我可以把String或AnyObject作为我的回归类型B,我为什么不被允许<T extends Object> T进入我的C班级?
从我的观点来看,另一个奇怪的行为是这样的另一种方法:
public class D extends A{
@Override
public Object get(int …Run Code Online (Sandbox Code Playgroud) 我真的很困惑片段的内部状态.如果另一个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
让我们假设以下简单的对象:
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)
会好的.有类似的东西吗?
所以我试图为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) 我有一个问题是将位图保存到文件中.我的方法是这样的:
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)