错误:链接文件资源失败。找不到视图对象

时间:2018-04-19 05:18:25

标签: android android-animation

我将View对象与xml文件连接起来。但是当我尝试编译时,“错误:链接文件资源失败。 在" ~ = findIdByView(R.id.~);"中,R用红色着色。但我觉得我做得很好。我不知道如何解决它。

方案

我正在尝试在MainActivity中创建2个LinearLayouts。 (一个用于WebView,另一个用于textView。) 我使用textView将一些动画效果应用到布局。

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
    android:id="@+id/background"
    android:layout_width="match_parent"
    android:layout_height="459dp"
    android:layout_gravity="bottom|center_horizontal"
    android:orientation="vertical">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>


<LinearLayout
    android:id="@+id/page"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_gravity="top"
    android:visibility="gone">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="tab"/>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center_horizontal">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Open"
        android:onClick="onButton1Clicked"/>
</LinearLayout>
</FrameLayout>

MainActivity.java

    package com.tistory.jaehoonx2.doitmission_08;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.Button;
    import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

boolean isPageOpen = false;

Animation translateTopAnim;
Animation translateBottomAnim;

LinearLayout page;
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    page = (LinearLayout) findViewById(R.id.page);    // Every "R" in onCreate() is colored red....

    translateTopAnim = AnimationUtils.loadAnimation(this, R.anim.translate_top);
    translateBottomAnim = AnimationUtils.loadAnimation(this, R.anim.translate_bottom);

    SlidingPageAnimationListener animListener = new SlidingPageAnimationListener();
    translateTopAnim.setAnimationListener(animListener);
    translateBottomAnim.setAnimationListener(animListener);
}

public void onButton1Clicked(View v){
    if(isPageOpen) {
        page.startAnimation(translateTopAnim);
    } else {
        page.setVisibility(View.VISIBLE);
        page.startAnimation(translateBottomAnim);
    }
}


private class SlidingPageAnimationListener implements Animation.AnimationListener {

    @Override
    public void onAnimationStart(Animation animation) {}

    @Override
    public void onAnimationEnd(Animation animation) {
        if(isPageOpen) {
            page.setVisibility(View.INVISIBLE);

            button.setText("Open");
            isPageOpen = false;
        } else {
            button.setText("Close");
            isPageOpen = true;
        }
    }

    @Override
    public void onAnimationRepeat(Animation animation) {}
}

}

translate_top.xml(除了一些数字,translate_bottom.xml几乎相同):

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromYDelta="0%p"
    android:toYDelta="100%p"
    android:duration="500"
    android:reapeatCount="0"
    android:fillAfter="true"
    />
</set>

2 个答案:

答案 0 :(得分:0)

问题应该是索引。

清理您的项目。

转到Build - &gt;在你的android工作室清理项目。

如果它仍然存在。

转到文件 - &gt;无效缓存/重启

答案 1 :(得分:0)

这是因为您在android:reapeatCount中使用了translate_top.xml的错误属性。它应该是android:repeatCount。所以,你需要修复它并改为这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromYDelta="0%p"
    android:toYDelta="100%p"
    android:duration="500"
    android:repeatCount="0"
    android:fillAfter="true"
    />
</set>