我已经看到它在某处讨论过以下代码导致obj
成为a Double
,但它200.0
从左侧打印.
Object obj = true ? new Integer(200) : new Double(0.0);
System.out.println(obj);
Run Code Online (Sandbox Code Playgroud)
结果:200.0
但是,如果您在右手边放一个不同的对象,例如BigDecimal
,类型obj
是Integer
理所应当的.
Object obj = true ? new Integer(200) : new BigDecimal(0.0);
System.out.println(obj);
Run Code Online (Sandbox Code Playgroud)
结果:200
我认为这样做的原因是将左侧投射到a/与比较和计算double
相同的方式,但这里左右两侧不会以这种方式相互作用.integer
double
为什么会这样?
我正在重新开始研究我之前工作的应用程序,当时我已经围绕Android 2.2 Froyo构建了所有内容.
我已经更新了我的SDK以获取最新的API,并注意到我使用的ClipboardManager功能已被弃用.我更新了代码以使用较新的ClipData模型并在我的Froyo手机上试用了它,当然,我在新代码中得到了一个NoClassDefFoundError.
我已经浏览了一下,并没有找到任何关于保持向后兼容性的一般策略的真实讨论.
我不完全确定我应该如何处理这个以及API不同的其他情况,因为我希望所有版本的用户都能够使用我的应用程序.
我应该按如下方式进行检查吗?
if(version == old){
use old API;
} else {
use new API;
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,我已经弃用了我的类中的代码,Eclipse将永远发出警告.
另一方面,我可以构建一个旧版本的API,并希望新版本可以正常处理它.但是当有更好的替代方案时,我冒着构建有缺陷或低性能代码的风险.
处理这个问题的最佳方法是什么?
在内核模块中以秒(自纪元开始)获取当前时间的标准方法是什么?
我已经看到了涉及获取xtime的技术,这些技术非常冗长且涉及while循环和锁定.肯定有更好的办法.
[这不是重复的.我已经查看了之前的问题.许多这些的答案要么没有指定使用的函数,要么错误地引用内核中不允许的time.h]
我正在使用自定义的BaseAdapter在ListView上显示项目.这些项只是ArrayList中的字符串.
列表项上有一个删除按钮(大红色X),我想从ArrayList中删除该项,并通知ListView更新自己.
但是,我尝试的每个实现都会获得神秘的位置编号,因此例如单击项目2的删除按钮将删除项目5.它似乎几乎完全是随机的.
需要注意的一点是元素可能会重复,但必须保持相同的顺序.例如,我可以将"爱尔兰语"两次作为元素3和7.
我的代码如下:
private static class ViewHolder {
TextView lang;
int position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.language_link_row, null);
holder = new ViewHolder();
holder.lang = (TextView)convertView.findViewById(R.id.language_link_text);
holder.position = position;
final ImageView deleteButton = (ImageView)
convertView.findViewById(R.id.language_link_cross_delete);
deleteButton.setOnClickListener(this);
convertView.setTag(holder);
deleteButton.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.lang.setText(mLanguages.get(position));
return convertView;
}
Run Code Online (Sandbox Code Playgroud)
我稍后尝试通过抓取标记来检索已删除元素的位置,但它始终是列表中的错误位置.这里给出的位置没有明显的模式,它似乎总是随机的.
// The delete button's listener
public void onClick(View v) {
ViewHolder deleteHolder …
Run Code Online (Sandbox Code Playgroud) 我是新手使用PreferenceActivity.
任务:允许用户从"首选项"中选择程序布局
问题:在PreferenceList中选择一个选项会导致NullPointerException
出现异常:在android.preference.ListPreference.onDialogClosed()
(缩短)代码:
private static final String PREF_LAYOUT_KEY = "PrefLayout";
private static final int DEFAULT_LAYOUT = LayoutHelper.LAYOUT_DOUBLE ;
private static int mListLayout = DEFAULT_LAYOUT ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
pref.registerOnSharedPreferenceChangeListener(this);
mListLayout = pref.getInt(PREF_LAYOUT_KEY, DEFAULT_LAYOUT);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences pref,
String key) {
Log.v(TAG, "OnSharedPreferencesChanged run" ); // TODO Testing Purposes
if( key.equals( PREF_LAYOUT_KEY ) ){
mListLayout = pref.getInt(key, DEFAULT_LAYOUT);
}
}
Run Code Online (Sandbox Code Playgroud)
[PreferenceActivity]
public class Preferences extends PreferenceActivity …
Run Code Online (Sandbox Code Playgroud)