我使用以下代码来获取文件的修改日期(如果存在):
if os.path.isfile(file_name):
last_modified_date = datetime.fromtimestamp(os.path.getmtime(file_name))
else:
last_modified_date = datetime.fromtimestamp(0)
Run Code Online (Sandbox Code Playgroud)
有更优雅/短暂的方式吗?
最近我遇到了一个难以重现的问题.当片段尝试使用Activity中的数据初始化ArrayAdapter时,会发生NPE.在Activity的onCreate方法中初始化的默认列表:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
mAccounts = new ArrayList<>();
// ...
}
@Override
public List<Account> getAccounts(){
return mAccounts;
}
Run Code Online (Sandbox Code Playgroud)
该片段还在其onCreate()中创建了一个列表适配器:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
setHasOptionsMenu(true);
//mAccountProvider is an interface implemented by the activity
mAccounts = mAccountProvider.getAccounts();
mAccountAdapter = new AccountAdapter(getActivity(), R.layout.account_list_item, mAccounts);
}
Run Code Online (Sandbox Code Playgroud)
调用默认的getCount()方法时,NPE发生在AccountAdapter内部.原因是mAccounts为空.问题很少出现,我无法重现它.
如果是有可能,片段的的onCreate()在活动的前所谓的onCreate() ?根据源代码,Fragment的onCreate()在Activity的onCreate()中调度.为什么在Activity的onCreate()完成执行后调用呢?
我有一个简单的地址表,其中包含以下create语句:
"CREATE TABLE " + ADDRESSES_TABLE + " (" +
KEY_ADDRESS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_ADDRESS_COUNTRY + " TEXT, " +
KEY_ADDRESS_CITY + " TEXT, " +
KEY_ADDRESS_STREET + " TEXT, " +
KEY_ADDRESS_HOUSE + " TEXT, " +
KEY_ADDRESS_POSTAL_CODE + " TEXT," +
"UNIQUE("+KEY_ADDRESS_COUNTRY+","+KEY_ADDRESS_CITY+","+KEY_ADDRESS_STREET+","+KEY_ADDRESS_HOUSE+","+KEY_ADDRESS_POSTAL_CODE +") ON CONFLICT IGNORE)"
Run Code Online (Sandbox Code Playgroud)
当我添加重复记录时,insert()metod返回-1而不是现有行的id.
该问题仅在4.0+上可重现.该方法在2.2和2.3.3上按预期工作.
有没有人遇到同样的问题?
我有一个包含图像图标的70个文本项目列表(存储在drawables文件夹中).如果我第一次启动应用程序并慢慢滚动列表 - 不会发生异常.
当应用程序第一次启动时,我使用'fling'动作滚动列表时会发生以下异常:
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:439)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:322)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:688)
at android.content.res.Resources.loadDrawable(Resources.java:1710)
at android.content.res.Resources.getDrawable(Resources.java:585)
Run Code Online (Sandbox Code Playgroud)
之后,如果我使用DDMS终止应用程序,再次启动它并使用'fling'动作滚动它,不会发生异常.因此,只有在第一次安装和启动应用程序时才会出现异常.
这是我用于列表的适配器:
public class AuthorAdapter extends ArrayAdapter<Author> {
private ArrayList<Author> items;
private Context context;
private LayoutInflater inflater;
public AuthorAdapter(Context context, int textViewResourceId, ArrayList<Author> items) {
super(context, textViewResourceId, items);
this.items = items;
this.context = context;
inflater = LayoutInflater.from(this.context);
}
static class ViewHolder {
ImageView authorFace;
TextView authorName;
TextView authorWho;
}
@Override
public View getView(int position, View convertView, ViewGroup …
Run Code Online (Sandbox Code Playgroud) 我正在使用sortedBy()
对对象集合进行排序。
由于顺序可能会根据用户的选择而变化,因此我最终得到了以下代码
val sortedList = if (sortingOrder == WordSortingOrder.BY_ALPHA) {
list.sortedBy { it.word.value }
} else {
list.sortedBy { it.createdAt }
}
Run Code Online (Sandbox Code Playgroud)
然后我对排序后的集合执行进一步的操作。我意识到该sortedBy()
方法需要返回一个属性。我想知道是否有一种方法可以将排序条件嵌入到一个收集方法链中。
在一个方法中,我希望接收KMutableProperty作为参数并为其赋值.
另一个问题是将参数传递给这种方法的正确方法是什么.
基本上我想有类似的东西:
class MyBinder {
...
fun bind(property: KMutableProperty<Int>): Unit {
property.set(internalIntValue)
}
}
Run Code Online (Sandbox Code Playgroud)
然后在另一个类中调用它
myBinder.bind(this::intProperty)
Run Code Online (Sandbox Code Playgroud) 当我aws_cloudwatch_log_resource_policy
在配置文件中使用该文件时,它已成功应用。我期望某个策略出现在Web控制台的IAM->“策略”列表中,但是没有新策略的迹象。
aws_cloudwatch_log_resource_policy
创建什么样的资源?