[英]is there a way to regenerate R.java programming for android in eclipse?
我只是做了一个干净的工作,并在我正在处理的Java教程上构建,似乎gen目录中的R.java文件消失了。 有什么办法告诉Eclipse重新生成该文件?
最初,我在findViewById()中无法识别xml文件中的ID时遇到问题。 所以我做了一个项目/清理...来更新R.java文件以包括缺少的ID。
令我沮丧的是,R.java刚刚消失了。 而不是得到无法找到id的错误,我得到了无法找到(R.id.crime_title的)变量R的错误。 不知道从这里去哪里。
activity_crime.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
fragment_crime.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/crime_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/crime_title_hint" /> </LinearLayout>
CrimeActivity.java
package com.example.criminalintent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
public class CrimeActivity extends FragmentActivity {
//called when the activity is first created.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crime);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
if(fragment == null){
fragment = new CrimeFragment();
fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}
}
CrimeFragment.java
package com.example.criminalintent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
public class CrimeFragment extends Fragment {
private Crime mCrime;
private EditText mTitleField;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mCrime = new Crime();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState){
ViewGroup v = (ViewGroup)inflater.inflate(R.layout.fragment_crime, null);
mTitleField = (EditText) v.findViewById(R.id.crime_title);
mTitleField.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence c, int start, int before,
int count) {
mCrime.setTitle(c.toString());
}
});
return v;
}
}
在菜单栏中,单击
Project -> Clean
如果无法创建R
文件,这将重新生成R
文件,请检查输出控制台中是否有任何无法正确构建的XML文件。
如果您清理了它并消失了,则表明它无法正确重建。 如果您在代码的任何地方都看不到任何明显的红色,请检查您的XML,因为有时Eclipse会将其隐藏得非常好。 仔细检查一下,确定可以编译时,再次清理,然后将重新构建R.java。
从内存来看,我认为一旦问题自动修复,它将很快重建,但我不确定。
R.java是由ADT自动生成的文件。 不能手动生成/编辑它。 因此,如果未生成R.java,则意味着您的代码(XML / Java)中存在一些错误。 请解决它们,瞧,您将生成R.java。 如果您在解决错误方面需要任何帮助,请分享错误,以便我们为您提供帮助。
看来我在字符串文件中丢失了一个字符串...这就是导致生成错误的原因。 一旦将其重新添加(我按照教程将其删除),所有内容将再次编译。
检查您的res/menu folder
中是否存在文件crime.xml
,其中包含指向字符串android:title="@string/action_settings"
的条目。
因此,将此行添加到资源<string name="action_settings">Settings</string>
中的res/values/strings.xml
中。 然后去
menu -> project -> clean and rebuilt
如果您已经选择了project->rebuilt
自动,那么它将自动生成R.java
文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.