在教程的Android出错找不到符号变量activity_display_message

问题描述:

我想通过学习教程和Android工作室Android应用建设。有关xml和导入的一些评论是有帮助的。我陷入了一个错误。我得到这个错误错误:(22,57)错误:无法找到符号变量activity_display_message在教程的Android出错找不到符号变量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' 
} 

我已经通过清洁工程解决同样的问题,然后生成gradle这个,请尝试一次。

我想:

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

应该是:

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

不幸的是,将ViewGroup改为RelativeLayout对我来说并不适用。 = \ – Tscott

"@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); 

校正方法最好应该是这样的,但请注意,您可能希望在一些的LayoutParams TextView,否则它可能不会显示在屏幕上。

@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); 
} 
+0

非常感谢。就是这样。有效。 –

不知道是否有人仍然需要这个问题的答案,但我想它是这样的:

我在教程中看到这一点:

Note: The XML layout generated by previous versions of Android Studio might not include the android:id attribute. The call findViewById() will fail if the layout does not have the android:id attribute. If this is the case, open activity_display_message.xml and add the attribute android:id="@+id/activity_display_message" to the layout element.

所以,RES下 - > layout - > activity_display_message.xml,我输入该行

android:id="@+id/activity_display_message" 

RelativeLayout标记内的任何位置。 paddingTop和工具:上下文字段

希望这有助于:d

+1

我也跟着教程,遇到同样的问题,我仍然得到相同的错误消息:“错误:(18,60)错误:无法找到符号变量EXTRA_MESSAGE” 我已经everthing最新Andriod Studios和我的属性ID已经存在于activity_display_message.xml文件中。 我有一种感觉,EXTRA_MESSAGE与Acivity_Main.java文件不能沟通,但我不确定它为什么看不到它。 – Tscott

下面是该更新的解决方案在我的情况而言,笔者随机在两者之间的机器人猛的。

意图是主要活动的一个子类,所以没有必要明确指定。这意味着我们可以称之为EXTRA_MESSAGE,而不是MainActivity.

EXTRA_MESSAGE

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_message); 

    Intent intent = getIntent(); 
    String message = intent.getStringExtra(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); 
+0

这解决了我的问题。从“MainActivity.EXTRA_MESSAGE”中为字符串消息代码行取出“MainActivity”对我来说是这样的。 – Tscott

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

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

确认这是包含在@覆盖在上面的MainActivity.java和你所有的设置:)

+0

非常感谢。这在尝试了很多答案后有所帮助 –

+0

你刚刚为我节省了很多时间:) –

错误来自MainActivity.java文件。

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

我在哪里(R.id.editText); .....系统放(R.id.edit_message);

edit_message是添加到文本框中的函数,但它位于(EditText)“代码块”下。对于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"); 
    } 
} 

我有同样的错误消息:找不到符号变量activity_display_message

我解决它通过添加机器人:ID在activity_display_message.xml

<?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> 

检查,如果你有这样的代码在MainActivity.java

public class MainActivity extends AppCompatActivity { 

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

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

我也有同样的问题。得到了纠正的错误,当我替换错误行: -

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

我有这个问题太多次试图做这个教程,并添加到这里唯一的答案,帮助我,这是删除MainActivity.MainActivity.EXTRA_MESSAGE部分...

我也不得不导入DisplayMessageActivity.java如下:

import static android.provider.AlarmClock.EXTRA_MESSAGE;

这彻底解决了我所有的错误和允许我继续教程。