getLocationOnScreen崩溃

时间:2011-08-29 13:32:16

标签: java android

我需要在屏幕上获取我的应用程序的坐标,以将它们用作弹出窗口的偏移量。

                    View tempView = (View) findViewById(R.layout.main);
                    int[] loc = {0,0};
                    tempView.getLocationOnScreen(loc); /// crashes here!

尝试了这段代码,但最后一行使应用程序崩溃。也许我从主要版面获得的tempView与屏幕上的布局不一致?

任何建议......谢谢! :)


加入: 解决

                    int[] loc = new int[2]; 
                    View tempView = (View) findViewById(R.id.LL_whole);
                    tempView.getLocationOnScreen(loc);

                    post( String.valueOf(loc[1]) );

作品! :)

2 个答案:

答案 0 :(得分:1)

尝试检查tempView是否为null。我怀疑findViewById()无法找到你给它的id。

int[] loc = {0,0};
View tempView = (View) findViewById(R.layout.main);
if (tempView != null) {
    tempView.getLocationOnScreen(loc);
} else {
    Log.d("YourComponent", "tempView was null.");
}

在您的XML中,您有类似这样的内容:

<SomeLayout android:id="@+id/myLayout" ... >

    <SomeView android:id="@+id/myView" ... />
    <SomeOtherView android:id="@+id/myOtherView" .../>

</SomeLayout>

所以你想说:

SomeView v = (SomeView)findViewById(R.id.myView);  

或者也许:

SomeLayout l = (SomeLayout)findViewById(R.id.myLayout);

答案 1 :(得分:1)

findViewById(R.layout.main)

你应该把R.id.something放在R.layout.something。