我需要在屏幕上获取我的应用程序的坐标,以将它们用作弹出窗口的偏移量。
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]) );
作品! :)
答案 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。