小编dnk*_*tso的帖子

GridLayout(不是GridView)如何均匀地拉伸所有孩子

我希望有一个带有按钮的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 android-layout android-gridview android-gridlayout

211
推荐指数
10
解决办法
30万
查看次数

Android AsyncTask上下文行为

我一直在使用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)

multithreading android android-context android-asynctask

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

自定义片段(NPE)内的Android Maps V2 MapView

我不想使用或扩展SupportMapFragmentMapFragment.我有自己的基类,里面有一堆代码.

文档清楚地指出,当有人单独使用时MapView,onCreate() onResume()应调用所有相应的生命周期方法(等).

a中的大多数生命周期方法Fragment都类似于a,Activity但是当我在我之间来回切换时,我Fragment最终会onDestroy()onResume()方法中或方法中获得混淆的NPE .

所有样品提供使用ActivityMapView,但不是自定义Fragment.

有人做过吗?你能提供MapView自己Fragment班级的样本代码吗?

maps android google-maps

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

Android LruCache(Android 3.1)线程安全

新的Android类LruCache线程是否安全?java doc说:

这个类是线程安全的.通过在缓存上同步以原子方式执行多个缓存操作:

   synchronized (cache) {
     if (cache.get(key) == null) {
         cache.put(key, value);

   }}
Run Code Online (Sandbox Code Playgroud)

他们是不是说不是线程安全的?如果类是线程安全的,为什么必须同步?

谢谢!

android thread-safety lru

12
推荐指数
1
解决办法
2130
查看次数

Android中的适配器应该是静态内部类还是非静态内部类

我在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 weak-references adapter

12
推荐指数
1
解决办法
2913
查看次数

使用singleTop和前台服务的Android生命周期怪异?

这是场景:

  • 开始活动A.
  • 活动A启动服务S.
  • 服务S在前台模式下运行并显示一个通知,按下该通知将用户带到活动B(具有launchMode ="singleTop")
  • 活动B出现
  • 按HOME
  • 进入DDMS并终止您的应用程序进程以模拟您的应用程序死亡(按下红色STOP按钮)
  • Android将说"重新安排在5000毫秒内崩溃的服务"(有时更长)
  • 服务S重新启动并显示通知.
  • 服务重新启动时按通知图标...

...此时,Android将恢复活动A和B,因为该过程意外结束.但是,尽管活动B是singleTop,因为用户点击了通知,因此android会将其生成AGAIN.这导致在活动堆栈上具有A - > B - > B. 按下将再次带您进入活动B的第一个恢复实例.

Android团队中的某些人可以澄清幕后发生的事情以及如何避免这种情况吗?模拟Android因内存不足而杀死进程的最佳方法是什么?从DDMS按STOP是否足够好还是边缘情况,这在正常情况下永远不会发生?

来自设置 - >应用程序与来自DDMS的STOP的"强制停止"有什么区别?

提前致谢!

service lifecycle android android-activity

12
推荐指数
1
解决办法
1221
查看次数

Android内容提供程序查询IN子句

是否可以为内容提供商使用IN子句?

我目前正在使用

cursor = contentResolver.query(CONTENT_URI, PROJECTION, "field IN (?)", new String[] { argsBuilder.toString() }, null);
Run Code Online (Sandbox Code Playgroud)

如果我删除(?)并只是使用?我得到一个错误.

我的光标得到0计数.

如果我手动输入并在sqlite3中执行查询就可以了.

救命?

sqlite android

10
推荐指数
1
解决办法
4321
查看次数

弱引用get()方法有多安全?(Android,asynctask)

我正在制作Android移动应用.我在AsyncTask中对我的Activity有一个WeakReference以确保它可以被垃圾收集.

onPostExecute()被调用时,我做的

Acitivty activity = mWeakRef.get();
Run Code Online (Sandbox Code Playgroud)

然后我使用activity对象向用户显示对话框等.

我的问题是,当我试图确定要显示哪个对话框以及要做什么时,我的活动对象可能变为空吗?如果GC在我的执行行之间运行,它是否会变为null?我可以安全地从第一个继续使用该对象,get()或者我必须重做get()并在使用之前检查值是否为空.

谢谢!

java android weak-references

10
推荐指数
1
解决办法
4597
查看次数

ViewFlipper与片段

我有一个带有ViewFlipper的Activity,它在一堆视图(页面)和我的数据之间翻转.

我正在考虑使用片段API在我的视图之间切换.这样做有什么好处?

我是否可以通过使用片段看到性能提升,因为ViewFlipper实际上切换了可见性标志,并且在添加/删除视图层次结构时片段实际上会替换视图层次结构?

有人可以给我们更多的见解吗?

谢谢!

android viewflipper android-fragments

9
推荐指数
1
解决办法
8809
查看次数

ListView中的ViewPager

有没有办法将viewpager添加为listview项?

我希望在所有真实列表项跟随之前将其添加为listview顶部的"标题".我尝试使用addHeaderView()或在我的列表适配器中声明多个视图类型,但是,viewpager从不以我尝试的方式显示.

有没有人做过类似的事情?救命!

android listview android-listview android-viewpager

8
推荐指数
2
解决办法
8253
查看次数