小编Mag*_*ahn的帖子

从睡眠模式恢复时保持GridView

我遇到了一个非常大的GridView问题.(大约70个孩子)如果我在onCreate上启动它或者在按下主页按钮然后返回后恢复后,GridView工作正常.但是当我从睡眠模式恢复后恢复时,我的BaseAdapter再次启动并破坏了我在运行时对其所做的更改.如果我在重启后调用它,这也会使getChildAt()给出NullPointerException.

我怎样才能让它只是按常规onPause(主页按钮)对GridView进行操作,并避免每次从睡眠模式恢复时GridView被清除?

编辑:我已经尝试为我的Activity类设置一个唤醒锁,它调用BaseAdpter没有运气

2.编辑:自从我发布这个问题以来,我一直试图在onPause中使用此代码恢复GridView:

 SparseArray<Parcelable> array = new SparseArray<Parcelable>();
    gridView.saveHierarchyState(array);
    bundle = new Bundle();
    bundle.putSparseParcelableArray("state", array);
Run Code Online (Sandbox Code Playgroud)

这在onResume:

 try{
    gridView.restoreHierarchyState(bundle.getSparseParcelableArray("state"));
    }
    catch(Exception e){
        //Most likely first start
        Log.i("SomeTag", "No GridView state found");
    }

    }
Run Code Online (Sandbox Code Playgroud)

奇怪的是我在屏幕上似乎从一个地方跳到另一个地方的一切,当我尝试getChildAt()时它仍然崩溃.在睡眠模式之后它也无法获得它.

  1. 编辑这是来自BaseAdapter getView的代码(注意!这些代码中的一些是无关紧要的)

public View getView(int position,View convertView,ViewGroup parent){

mParentView = parent;


DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;

    //sets the height for every individual box
int box = width/7*6/10;

ImageCell v = null;
if (convertView == null) {
    // If it's …
Run Code Online (Sandbox Code Playgroud)

lifecycle android gridview android-gridview baseadapter

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

以编程方式删除GridView周围的额外空间

我正在尝试GridView在我的java类中以编程方式进行编译,一切正常.问题是周围自动生成的5像素填充GridView.在xml中我设法使用以下方法删除它:

android:listSelector="@null"
Run Code Online (Sandbox Code Playgroud)

但我无法在java中做任何类似的事情.我尝试了一些解决方法,比如使GridView实际屏幕大10像素,没有运气.

有没有人有这个代码?

编辑:

我的答案并没有解决问题.仍然有赏金.这是我的GridView代码:

    GridView gridView = new GridView(this);
    gridView.setNumColumns(someInt);
    gridView.setAdapter (new MyCustomAdapter(this));
    gridView.setLayoutParams(new GridView.LayoutParams(
            customValue,
            LayoutParams.FILL_PARENT,
            Gravity.CENTER_HORIZONTAL)
    );
Run Code Online (Sandbox Code Playgroud)

android gridview

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

无法更改应用内结算的默认货币

我目前正在我的开发者控制台上添加项目,但我遇到了一个问题.问题是谷歌要求我为我自己的祖国增加价格.就我而言,这是挪威的货币NOK.我希望包括挪威在内的所有国家的价格相同,因为我已经将价格硬编码到我的应用程序中.

我仍然没有在我的开发者控制台上找到"更改默认货币"的任何设置,并根据我必须为我自己的国家/地区添加价格的文档.仅仅改变当前货币课程的挪威克朗价格的另一个问题是,美元的最低价格略低于挪威克朗的最低价格.

是否有任何解决方法临时更改默认货币?

android in-app-purchase in-app-billing

8
推荐指数
1
解决办法
2538
查看次数

"锁定屏幕",带有自定义安全密码

我已经经历了很多类似的问题一看,我发现,这是不是可以进行锁屏为标准的Android储物柜.可能的做法是创建一个禁用LockScreen的应用程序,并使用不同的"锁定"而不是标准的"锁定".我正在考虑使用不同类型的锁来制作自定义锁屏.我不知道的可能是:

  1. 是否有任何方法可以为锁屏使用.xml布局
  2. 我可以像普通应用程序一样编写它

我不想要对市场上的现有应用程序进行裁决.

android lockscreen

6
推荐指数
1
解决办法
2865
查看次数

确定特定的充电器输入

我目前正在做一个可靠的方式来确定具体的充电器类型,在我的情况下,音乐码头像这样.问题是,这个停靠站在停靠时不会发送停靠事件.

因为我正在制作一个应用程序,依赖于能够确定设备何时停靠或取消停靠.因此,我需要一种过滤和分离这些事件的方法:

  • 设备通过USB连接器充电(没有单独的充电器)
  • 设备连接到计算机
  • 某种将慢充电底座与标准充电器分开的方法

我注意到我的设备(LG optimus 4x HD)设法对这些操作中的每一个做出不同的反应.当它连接到标准充电器时,它不会发出通知消息,当它连接到计算机时它告诉我USB模式已被激活,当它连接到底座时,它给我一个慢的充电器警告.

我需要建立一个具有相同能力的系统来分离这些动作并对它们作出反应.到目前为止,我只制作了一个简单的BroadcastReceiver,如果设备连接或未连接到充电器,它会做出反应.我还设法使用文档中的代码监控充电状态.

有没有办法确定这个特定的充电器输入?

android battery broadcastreceiver

6
推荐指数
1
解决办法
1261
查看次数

从另一个Activity访问TabHost

我需要从所有活动中更改TabHost.我做了一些研究,但我没有发现任何与TabHost兼容的东西.

我希望能够从另一个Activity中隐藏TabHost.(如果我设法访问它,隐藏它对我来说不是问题)

我之前曾使用过一些公共静态函数,但却无法使用TabHost.我需要它可以从所有活动中更改的原因是TabHost应该只消除特定活动的结果.

TabHost是股票.

android android-tabhost android-activity

4
推荐指数
1
解决办法
1513
查看次数

打开第三方应用

我正在开发一个使用包名来启动第三方应用程序的应用程序.我做了一些研究,发现所有应用程序都可以从启动器意图启动.是否有人知道如何通过单击按钮来执行此操作.

android android-intent

1
推荐指数
2
解决办法
4678
查看次数

尝试启动意图,如果崩溃,启动另一个意图

我正在开发一个应用程序,我需要使用某种方法来点击一个按钮来进行两种不同的意图.第一个有时只能在不崩溃应用程序的情况下启动.因此,我需要启动另一个意图,因为应用程序通常会崩溃.

更好的解释我是否需要某种方法来启动另一个意图,如果1. intent无法启动新活动,则启动2意图.

我真的很欣赏某种公式,而不是链接或参考.

android android-intent

0
推荐指数
1
解决办法
2682
查看次数

从另一个类调用非静态void

我试图结束一个永无止境的圈子.我需要从另一个类调用一个非静态的void.我没有让它静止的原因是有些东西很难制作静态.(静态空间内的所有内容都必须是静态的).

我被困在一个圆圈里,我需要从另一个类中调用非静态void.我不能让它静态,因为它有些代码不喜欢传递.

直到现在我通过处理程序解决了它:

public static void change(){
//This is called to change a boolean
start=true;}

private void startDone(){
int timeBetweenChecks = 50;
final Handler h = new Handler();
h.postDelayed(new Runnable(){
    public void run(){
        if (start==false){
           startDone();

        } else{  
            //Do something          
        }          
        }
    }
}, timeBetweenChecks);
Run Code Online (Sandbox Code Playgroud)

};

这个问题是我必须运行一个处理程序,检查是否经常发生变化(在我的情况下).

有没有办法直接调用非静态startDone()?

java android static-methods boolean

0
推荐指数
1
解决办法
1516
查看次数