【问题标题】:Errors in first Android application第一个 Android 应用程序中的错误
【发布时间】:2013-10-28 14:01:24
【问题描述】:

所以我一直在阅读有关创建 Android 应用程序的初学者指南 (http://developer.android.com/training/basics/firstapp/index.html)。除了我不断出错的一步之外,它运行良好。

MainActivity.java 对我不起作用。我在 3 个不同的地方遇到各种错误。

这是我的代码的样子:

package com.fredde.myfirstapp;


public class MainActivity extends Activity {
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

    import android.app.Activity;enter code here
    import android.content.Intent;
    import android.view.View;
    import android.widget.EditText;
    import android.view.View;



    /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
      Intent intent = new Intent(this, DisplayMessageActivity.class);
      EditText editText = (EditText) findViewById(R.id.edit_message);
      String message = editText.getText().toString();
      intent.putExtra(EXTRA_MESSAGE, message);
      startActivity(intent);
    }

因此,我希望阅读过本指南的人可以帮助我,或者只是希望即使没有完成此特定项目也能看出问题所在的人。提前致谢!

放轻松,我是一个完全的初学者。

【问题讨论】:

  • 我不知道您会遇到哪些错误,但可以肯定的是。您没有为活动设置任何布局,因此 findViewById 肯定会返回 null。您可能会在下一行得到 NullRefException。我建议您多阅读有关如何实施活动的内容。
  • 你到底是怎么在 Activity 类中得到这些导入的?
  • 你忘了活动onCreate方法
  • 现在剩下的是,复制G V的代码后,在EditText这一行出现错误 editText = (EditText) findViewById(R.id.edit_message); “ R 无法解析为变量” @ramaral

标签: java android


【解决方案1】:

import 语句应该在类之外。

package com.fredde.myfirstapp;

import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.EditText;
import android.view.View;

public class MainActivity extends Activity {
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}

【讨论】:

  • @ramaral.. 我的错
  • 好的,所以在复制G V的代码后只剩下一个错误:在这一行ditText editText = (EditText) findViewById(R.id.edit_message);它说“R 无法解析为变量”
  • 你在 gen 文件夹中看到 R.java 了吗?
  • 我的意思是 gen\com\example\myandroid 文件夹
  • 我能看到的只有 BuildConfig.java、BuildConfig 和 DEBUG。我假设我正在寻找正确的文件夹,因为这是我似乎可以找到的唯一“gen”...@GV
【解决方案2】:

对于您的主要活动:

Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);

必须在res->values->下的strings.xml中定义以下内容

<resources>
...
<string name="title_activity_display_message">My Message</string>
</resources>

for R 无法解决: 确保您已在 xml 文件中将 edit_message 定义为编辑视图的 id,如下所示:

<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />

这应该可以解决您的问题

【讨论】:

    【解决方案3】:

    好的,所以在复制 G V 的代码后,只剩下一个错误:On this 行 ditText editText = (EditText) findViewById(R.id.edit_message);它 说“R 不能解析为变量”

    清理项目,然后重新构建。

    【讨论】:

    • 在这样做之后又在 2 行上出现同样的错误...@Nikoletta Muhari
    【解决方案4】:

    您需要调用 onCreate 和内部的 setCustomView 来为该活动添加布局。

    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setCustomView(R.layout.yourLayoutXMLfile);
    }
    

    如果你不写这个应用程序不知道在哪里可以找到像 EditText 等对象。

    【讨论】:

    • 我想你的意思是我应该把它放在 DisplayMessageActivity.java 中?我做到了,现在我收到一条错误消息,说 activity_main 无法解决或者不是一个字段@Lorenzo Barbagli 很抱歉成为一个完全的智障,但我对编程很陌生
    【解决方案5】:

    我刚刚编译了以下内容,没有收到任何错误。 这就是我在 onCreate 方法下所做的。

    setCustomView(R.layout.file.xml);
    

    为此在 res->layout->file.xml 下创建一个名为 file.xml 的文件。 我在 xml 中为编辑视图分配了一个 ID,例如:`

     <EditText 
        android:id="@+id/edit_mssg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/msg"/>
    

    我确定您有一个名为 DisplayMesageActivity.java 的 java 文件

     package com.fredde.myfirstapp;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.view.View;
    import android.widget.EditText;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setCustomView(R.layout.file.xml);
    }
    /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_mssg);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
    }
    

    【讨论】:

    • 如果您的错误太多,无法在此处发布错误,请您截取屏幕截图...
    • 好的,这是我在 AndroindManifest.xml、DisplayMessageAcitivty.java 和 MainActivity.java 中遇到的错误。 Idk 如果他们甚至对你有意义的话……现在完全迷失了。 @SHANKAR i.imgur.com/iWyt3jF.png?1?6503
    • 您是否在 AndroidManifest.xml 中定义了您的活动。你的第二个活动也应该被定义:。就在您之前的活动结束后。
    • 没有改变任何东西... :/ @SHANKAR
    • 这就是您的 manifest.xml 应该是什么样子...我直接从您在顶部提供的链接以及您的问题中得到它: ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多