我正在尝试通过教程和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'
}
答案 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);