教程中的android错误找不到符号变量activity_display_message

时间:2016-08-04 04:15:08

标签: java android xml gradle

我正在尝试通过教程和Android Studio学习Android应用程序构建。关于xml和import的一些评论是helpfult。我犯了一个错误。我收到此错误错误:(22,57)错误:找不到符号变量activity_display_message

关于导入的错误我已经修复了一些搜索堆栈流。我错过了什么

DisplayMessageActivity

package com.example.rpinto.myfirstapp;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

public class DisplayMessageActivity extends AppCompatActivity {

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

        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
        layout.addView(textView);
    }
}

activity_display_message.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.rpinto.myfirstapp.DisplayMessageActivity"
    tools:showIn="@layout/activity_display_message"
    android:id="@+id/content">
</RelativeLayout>

的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.1"

    defaultConfig {
        applicationId "com.example.rpinto.myfirstapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}

11 个答案:

答案 0 :(得分:4)

不知道是否有人仍然需要这个答案,但我这样想出来了:

我在教程中看到了这一点:

  

注意:以前版本的Android Studio生成的XML布局可能不包含android:id属性。如果布局没有android:id属性,则调用findViewById()将失败。如果是这种情况,请打开activity_display_message.xml并将属性android:id =“@ + id / activity_display_message”添加到布局元素。

所以,在Res - &gt;下布局 - &gt; activity_display_message.xml,我输入了

android:id="@+id/activity_display_message"

RelativeLayout标记内的任何位置。在我的具体情况下,我随机推送它在android:paddingTop和工具之间:上下文字段

希望这会有所帮助:D

答案 1 :(得分:3)

我有同样的问题。在Android Studio说明中的“构建意图”部分下,很容易错过这一行:

public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

确保它包含在MainActivity.java中@Override的上方,并且您已全部设置:)

答案 2 :(得分:2)

我想:

ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);

应该是:

RelativeLayout layout = (RelativeLayout ) findViewById(R.id.content);

答案 3 :(得分:1)

以下是此更新的解决方案。

Intent是Main Activity的子类,因此无需显式指定。这意味着我们可以拨打setAttribute(),而不是EXTRA_MESSAGE

MainActivity.

EXTRA_MESSAGE

答案 4 :(得分:0)

我已经通过清理项目解决了同样的问题然后构建了gradle,请尝试一次。

答案 5 :(得分:0)

"@layout/activity_display_message"

这是一种布局。不是身份证。

您在此处正确使用R.layout

setContentView(R.layout.activity_display_message);

但这是错误的R.id

ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
layout.addView(textView);

理想情况下,修正后的方法应该如下所示,但请注意,您可能需要TextView上的某些LayoutParams,否则它可能不会显示在屏幕上。

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

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    ViewGroup layout = (ViewGroup) findViewById(R.id.content);
    layout.addView(textView);
}

答案 6 :(得分:0)

错误来自MainActivity.java文件。

TextView tv = (TextView) findViewById(R.id.editText);

我所拥有的(R.id.editText); .....系统放(R.id.edit_message);

edit_message是添加到文本框的函数,但它位于(EditText)&#34; block&#34;代码Java新手,不确定调用的代码块是什么,也不确定程序为什么要将它放在公共类中。希望这可以帮助。

package com.example.josh.myfirstapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

    // Example of a call to a native method
    TextView tv = (TextView) findViewById(R.id.editText);
    tv.setText(stringFromJNI());
    }

    /**
     * A native method that is implemented by the 'native-lib' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }
}

答案 7 :(得分:0)

我收到了同样的错误消息:无法找到符号变量activity_display_message

我通过在activity_display_message.xml中添加 android:id 解决了这个问题

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.galo.myapplication.DisplayMessageActivity"
    android:id="@+id/activity_display_message">

</android.support.constraint.ConstraintLayout>

答案 8 :(得分:0)

检查MainActivity.java中是否有这样的代码:

public class MainActivity extends AppCompatActivity {

    public static final String EXTRA_MESSAGE = "com.example.MyApplicationstart.MESSAGE";

“com.example.MyApplicationstart.MESSAGE”,其中“MyApplicationstart”是您项目的名称。

答案 9 :(得分:0)

我这么多次尝试做这个教程时遇到了这个问题,并在这里添加了唯一有帮助我的答案,即从MainActivity.部分删除了MainActivity.EXTRA_MESSAGE ...

我还必须在DisplayMessageActivity.java中导入以下内容:

import static android.provider.AlarmClock.EXTRA_MESSAGE;

这完全解决了我的所有错误,并允许我继续教程。

答案 10 :(得分:-1)

我也有同样的问题。当我用以下代码替换错误行时,错误得到纠正: -

EditText editText = (EditText) findViewById(R.id.editText2);