【问题标题】:Android SQLite Database "R cannot be resolved to a variable"Android SQLite 数据库“R 无法解析为变量”
【发布时间】:2014-12-03 15:52:07
【问题描述】:

我刚开始学习 Android 编程,我正在尝试制作一个简单的 Android SQLite 数据库,但在 "src"".java" 文件中遇到了一些错误/strong> 例如“R 无法解析为变量”,并且我在 menu 文件夹中的 xml 中的错误说 “错误:未找到与给定名称匹配的资源(在 'title ' 值为 '@string/action_settings').database_android_satu.xml /DatabaseAndroid/res/menu 第 5 行 Android AAPT 问题" 我非常感谢你的好意回答和一些建议..

这是我的 .java 文件:

package com.db.satu;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TableLayout;
    import android.widget.TableRow;
    import android.widget.TextView;
    import android.widget.Toast;

    public class DatabaseAndroidSatu extends Activity {
    DatabaseManager dm;
    EditText nama, hobi;
    Button addBtn;
    TableLayout tabel4data;// tabel for data

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    dm = new DatabaseManager(this);
    tabel4data = (TableLayout) findViewById(R.id.tabel_data);
    nama = (EditText) findViewById(R.id.inNama);
    hobi = (EditText) findViewById(R.id.inHobi);
    addBtn = (Button) findViewById(R.id.btnAdd);
    addBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    simpKamuta();
    }
});
    updateTable();
    }

    protected void simpKamuta() {
    try {
    dm.addRow(nama.getText().toString(),hobi.getText().toString());
    Toast.makeText(getBaseContext(),
    nama.getText().toString() + ", berhasil disimpan",
    Toast.LENGTH_SHORT).show();
    updateTable();
    kosongkanField();
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getBaseContext(), "gagal simpan, " +
        e.toString(),Toast.LENGTH_LONG).show();
    }
    }
    protected void kosongkanField(){
    nama.setText("");
    hobi.setText("");
    }
    protected void updateTable() {
    // TODO Auto-generated method stub
    while (tabel4data.getChildCount() > 1) {
    tabel4data.removeViewAt(1);
    }

    ArrayList<ArrayList<Object>> data = dm.ambilSemuaBaris();//

    for (int posisi = 0; posisi < data.size(); posisi++) {
    TableRow tabelBaris = new TableRow(this);
    ArrayList<Object> baris = data.get(posisi);

    TextView idTxt = new TextView(this);
    idTxt.setText(baris.get(0).toString());
    tabelBaris.addView(idTxt);

    TextView namaTxt = new TextView(this);
    namaTxt.setText(baris.get(1).toString());
    tabelBaris.addView(namaTxt);

    TextView hobiTxt = new TextView(this);
    hobiTxt.setText(baris.get(2).toString());
    tabelBaris.addView(hobiTxt);

    tabel4data.addView(tabelBaris);
    }
}}

这是我位于项目菜单文件夹中的 .xml 文件: 它包含一个错误:“错误:找不到与给定名称匹配的资源(在'title',值为'@string/action_settings')。database_android_satu.xml /DatabaseAndroid/res/menu 第5行Android AAPT问题”

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.db.satu.DatabaseAndroidSatu" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

【问题讨论】:

  • 你的 xml 有一些错误。
  • 你能验证你的 /res/values/strings.xml 有 >
  • 您确实应该运行完整的 Gradle 构建,然后在 Android Studio 的 Project explorer 透视图中查看您的哪些资源文件带有红色下划线(有错误)。

标签: java android xml r.java-file


【解决方案1】:

您必须在 strings.xml 文件中指定 &lt;string name="action_settings"&gt;Some string&lt;/string&gt;

【讨论】:

    【解决方案2】:

    R.java 通常无法正常工作,这是因为您的某个 XML 文件存在问题。在这种情况下,您的 menu.xml 文件会导致问题。它表明您正在引用一个名为 action_settings 的字符串,但该字符串尚未定义。

    要解决此问题,请打开您的 strings.xml 文件并使用 &lt;string name="action_settings"&gt;MyString&lt;/string&gt; 定义一个字符串。

    回复您的评论的示例:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="hello">Masukkan nama dan hobi</string>
        <string name="app_name">Database Android #1</string>
        <string name="btnAddtxt">Add</string>
        <string name="namaLabel">Nama</string>
        <string name="hobiLabel">hobi</string>
        <string name="nomorLabel">No.</string>
        <string name="nomorLabel">No.</string>
        <string name="action_settings">Settings</string>
    </resources>
    

    【讨论】:

    • 这是我的 string.xml 中的内容,您可以检查它们吗? Masukkan nama dan hobi数据库 Android #1 string> 添加Namahobi否.No.
    • 是的,所以你需要添加action_strings。我用一个例子更新了答案。
    • 无论如何,为什么当我要运行这个应用程序时它说不幸的是“应用程序名称”已经停止。为什么会这样?
    • 检查您的LogCat。它将包含应用程序崩溃时打印的堆栈跟踪。但是,这听起来像是一个单独的问题,如果您需要继续获得帮助,应该在单独的问题中发布。
    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多