我希望有一个带有按钮的2x2网格.这只是ICS所以我试图使用给定的新GridLayout.
这是我的布局的XML:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/favorites_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff00"
android:rowCount="2"
android:columnCount="2">
<Button
android:text="Cell 0"
android:layout_row="0"
android:layout_column="0"
android:textSize="14dip" />
<Button
android:text="Cell 1"
android:layout_row="0"
android:layout_column="1"
android:textSize="14dip" />
<Button
android:text="Cell 2"
android:layout_row="1"
android:layout_column="0"
android:textSize="14dip" />
<Button
android:text="Cell 3"
android:layout_row="1"
android:layout_column="1"
android:textSize="14dip" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
问题是我的视图不能均匀地拉伸到每一行.这会在GridLayout的右侧产生大量额外空间.
我试过设置,layout_gravity="fill_horizontal"但只适用于行的最后一个视图.这意味着Cell 1一直延伸为Cell 0提供足够的空间.
关于如何解决这个问题的想法?
我一直在使用Android中的AsyncTasks,我正在处理一个问题.
举一个简单的例子,一个带有一个AsyncTask的Activity.在背景上的任务没有做任何壮观的事情,只是睡了8秒钟.
在onPostExecute()方法的AsyncTask结束时,我只是将按钮可见性状态设置为View.VISIBLE,仅用于验证我的结果.
现在,这种方法很有效,直到用户决定在AsyncTask工作时(在8秒睡眠窗口内)更改手机方向.
我理解Android活动生命周期,我知道活动被破坏并重新创建.
这就是问题所在.AsyncTask指的是一个按钮,显然是对最初启动AsyncTask的上下文的引用.
我希望,这个旧的上下文(因为用户导致方向更改)要么变为null,要么AsyncTask要引用NPE以引用它试图使其可见的按钮.
相反,没有抛出NPE,AsyncTask认为按钮引用不为null,将其设置为可见.结果?屏幕上什么也没发生!
更新:我通过保持WeakReference活动并在配置更改发生时切换来解决这个问题.这很麻烦.
这是代码:
public class Main extends Activity {
private Button mButton = null;
private Button mTestButton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) findViewById(R.id.btnStart);
mButton.setOnClickListener(new OnClickListener () {
@Override
public void onClick(View v) {
new taskDoSomething().execute(0l);
}
});
mTestButton = (Button) findViewById(R.id.btnTest);
}
private class TaskDoSomething extends AsyncTask<Long, Integer, Integer>
{
@Override
protected Integer doInBackground(Long... params) {
Log.i("LOGGER", "Starting...");
try {
Thread.sleep(8000);
} …Run Code Online (Sandbox Code Playgroud) 我不想使用或扩展SupportMapFragment或MapFragment.我有自己的基类,里面有一堆代码.
文档清楚地指出,当有人单独使用时MapView,onCreate() onResume()应调用所有相应的生命周期方法(等).
a中的大多数生命周期方法Fragment都类似于a,Activity但是当我在我之间来回切换时,我Fragment最终会onDestroy()在onResume()方法中或方法中获得混淆的NPE .
所有样品提供使用Activity了MapView,但不是自定义Fragment.
有人做过吗?你能提供MapView自己Fragment班级的样本代码吗?
新的Android类LruCache线程是否安全?java doc说:
这个类是线程安全的.通过在缓存上同步以原子方式执行多个缓存操作:
synchronized (cache) {
if (cache.get(key) == null) {
cache.put(key, value);
}}
Run Code Online (Sandbox Code Playgroud)
他们是不是说不是线程安全的?如果类是线程安全的,为什么必须同步?
谢谢!
我在Activity中有一个ListView,我正在为ListView设置一个自定义适配器.
我的适配器类应该是:
private static class MyAdapter extends ArrayAdapter
Run Code Online (Sandbox Code Playgroud)
要么
private class MyAdapter extends ArrayAdapter
Run Code Online (Sandbox Code Playgroud)
我想它应该没有区别,只要适配器包含在活动参考中但想要确认.
这是场景:
...此时,Android将恢复活动A和B,因为该过程意外结束.但是,尽管活动B是singleTop,因为用户点击了通知,因此android会将其生成AGAIN.这导致在活动堆栈上具有A - > B - > B. 按下将再次带您进入活动B的第一个恢复实例.
Android团队中的某些人可以澄清幕后发生的事情以及如何避免这种情况吗?模拟Android因内存不足而杀死进程的最佳方法是什么?从DDMS按STOP是否足够好还是边缘情况,这在正常情况下永远不会发生?
来自设置 - >应用程序与来自DDMS的STOP的"强制停止"有什么区别?
提前致谢!
是否可以为内容提供商使用IN子句?
我目前正在使用
cursor = contentResolver.query(CONTENT_URI, PROJECTION, "field IN (?)", new String[] { argsBuilder.toString() }, null);
Run Code Online (Sandbox Code Playgroud)
如果我删除(?)并只是使用?我得到一个错误.
我的光标得到0计数.
如果我手动输入并在sqlite3中执行查询就可以了.
救命?
我正在制作Android移动应用.我在AsyncTask中对我的Activity有一个WeakReference以确保它可以被垃圾收集.
当onPostExecute()被调用时,我做的
Acitivty activity = mWeakRef.get();
Run Code Online (Sandbox Code Playgroud)
然后我使用activity对象向用户显示对话框等.
我的问题是,当我试图确定要显示哪个对话框以及要做什么时,我的活动对象可能变为空吗?如果GC在我的执行行之间运行,它是否会变为null?我可以安全地从第一个继续使用该对象,get()或者我必须重做get()并在使用之前检查值是否为空.
谢谢!
我有一个带有ViewFlipper的Activity,它在一堆视图(页面)和我的数据之间翻转.
我正在考虑使用片段API在我的视图之间切换.这样做有什么好处?
我是否可以通过使用片段看到性能提升,因为ViewFlipper实际上切换了可见性标志,并且在添加/删除视图层次结构时片段实际上会替换视图层次结构?
有人可以给我们更多的见解吗?
谢谢!
有没有办法将viewpager添加为listview项?
我希望在所有真实列表项跟随之前将其添加为listview顶部的"标题".我尝试使用addHeaderView()或在我的列表适配器中声明多个视图类型,但是,viewpager从不以我尝试的方式显示.
有没有人做过类似的事情?救命!