小编ste*_*sen的帖子

Android xml错误:"找不到与给定名称匹配的资源"和RelativeLayout(@ id/LinearLayout_acc,@ id/ProgressBar_statusScreen)

好的,所以这开始真的让我恼火.此错误以非常特殊但不太合理的方式弹出.

首先我要说的是,我已经查看了有关此错误的其他问题,谷歌也是这样.据我所知,大多数类似问题的出现是因为人们引用的String资源或不在同一布局文件中的其他内容,他们错误地放置了"@ id +"中的"+"或类似的东西.

我遇到的问题出现在布局.xml文件中RelativeLayout.这包含一个TableLayout,两个LinearLayout包含一些文本,最后一个ProgressBar.我想要的是进度条与相对布局android:layout_alignParentBottom="true"对齐,然后对齐进度条上方的两个线性布局(底部线性布局在进度条上方对齐,另一个在底部线性布局上方对齐).

它应该足够简单,看起来好像有效,即图形视图显示了所需的结果.但是,问题就出现了,Eclipse给出了两个线性布局的错误,

"错误:找不到与给定名称匹配的资源(在'layout_above'中,值为'@ id/LinearLayout_acc')."

和参考进度条的其他线性布局的相同错误.我有三次以上检查没有拼写错误(id也存在于packagename.R.java中),我已经尝试了十几次清理项目.

保存(和自动构建)时,我没有收到错误,直到我决定运行项目.另一个奇怪的事情是,当我从进度条而不是顶部线性布局引用底部线性布局时,我没有得到任何错误!

我的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_activity" >
        <TableLayout
             ... />

        <LinearLayout
            android:id="@+id/LinearLayout_dist"
            android:layout_above="@id/LinearLayout_acc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="10dp" >

            <TextView
                ... />

            <TextView
                ... />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/LinearLayout_acc"
            android:layout_above="@id/ProgressBar_statusScreen"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" >

            <TextView
                ... />

            <TextView
                ... />
        </LinearLayout>

        <ProgressBar
            android:id="@+id/ProgressBar_statusScreen"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_margin="16dp" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

请帮忙,我不知道是什么导致了这个错误!

用答案编辑

Shrikant提供了在布局文件中更改外观顺序的解决方案,以便元素仅引用在读取引用时已定义的其他元素.
此外,由于其他人发布,更改@id/@+id/,即使是在参考,不删除错误信息.正如Marco …

xml eclipse android

92
推荐指数
3
解决办法
7万
查看次数

Android:requestLocationUpdates最多每45秒更新一次位置

背景

我正在编写一个Android应用程序,其主要功能是跟踪用户的位置,并在用户接近某个点时发出警报.因此,我需要定期更新用户的位置,并且当用户接近目标时,这些间隔应该变小.因此,当用户位于目标1公里范围内时,我希望每20秒更新一次该位置,依此类推,直到用户到达为止.

问题

当我测试它(provider = LocationManager.NETWORK_PROVIDER),以调用requestLocationUpdates(provider, minTime, minDistance, locationListener)任何minTime < 45000具有相同的效果minTime = 45000,也就是我获得更新与间隔正好 45秒.
我知道最小时间参数只是一个"提示",但它不是我的应用程序提示.我得到指定间隔的更新,直到该间隔超过45秒.似乎位置更新之间的最短时间为45秒,硬编码到Android中,但这有点奇怪.另外我之前从未听说过这个问题,而且我无法在Stackoverflow上找到它.

因为我无法获得频繁的更新,我的解决方法(现在)是在需要requestLocationUpdates新位置时手动调用,然后只使用第一个可用位置.为了做到这一点,我handler.postDelayed(myRunnable, updateInterval)用来延迟通话,myRunnable然后负责通话requestLocationUpdates.但是,这种方法只能在50%(显然是随机的)时间内工作.

有没有人知道这个问题,有没有办法解决它?或者是我唯一的选择minTime = 0,只是希望最好的?

源代码

这是myRunnable的源代码,run()我的方法是我定期手动调用handler.postDelayed(myRunnable, updateInterval):

public class MyRunnable implements Runnable {
    private LocationManager manager;
    private LocationListener listener;

    @Override
    public void run() {
        // This is called everytime a new update is requested
        // so that only one request is …
Run Code Online (Sandbox Code Playgroud)

android location

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

标签 统计

android ×2

eclipse ×1

location ×1

xml ×1