我遇到的问题与其他人在 SO 上遇到的问题相同。在我的项目中,android studio说它无法解析符号R。
奇怪的是,它构建良好。我的问题类似于 SO 上的this帖子。
他的回答中唯一提到的是与他人合作时可能会发生此问题,并且由于错误我不得不从GitHub下载项目的主副本。
我在我的项目中尝试了以下操作:
清洁项目 重建项目。 重命名所有带有拼写错误的文件(helloworld为hello_world) 将项目名称从MyApp-Master更改为原始名称MyApp。 运行android lint以查找代码语法中的任何错误并进行修复 使用值代替硬编码属性
我还整理了{strong> SO 帖子here和here,但不幸的是,这些建议没有帮助。
我正在使用android studio 3.2.1
我没有包括所有无法解析R的类,因为R属于所有此类。 但这是 MainActivity.class
except KeyError: pass
这是相关的 activity_main.xml
package com.example.cohen.theepiccalculator;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private int drawerId;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
if (actionBar != null) {
actionBar.setHomeAsUpIndicator(R.drawable.ic_button_drop_down);
}
drawerLayout = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
drawerId = menuItem.getItemId();
menuItem.setChecked(true);
selectItem(drawerId);
drawerLayout.closeDrawers();
return true;
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
private void selectItem(int position){
switch (position){
case R.id.nav_currency :
Intent intentC = new Intent(MainActivity.this, InputActivityCurrency.class);
startActivity(intentC);
Toast.makeText(MainActivity.this,"Currency", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_length :
Intent intentL = new Intent(MainActivity.this, InputActivityLength.class);
startActivity(intentL);
Toast.makeText(MainActivity.this,"Length", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_weight :
Intent intentW = new Intent(MainActivity.this, InputActivityWeight.class);
startActivity(intentW);
Toast.makeText(MainActivity.this,"Weight", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_temp :
Intent intentT = new Intent(MainActivity.this, InputActivityTemperature.class);
startActivity(intentT);
Toast.makeText(MainActivity.this,"Temp", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_area :
Intent intentA = new Intent(MainActivity.this, InputActivityArea.class);
startActivity(intentA);
Toast.makeText(MainActivity.this,"Area", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_speed :
Intent intentS = new Intent(MainActivity.this, InputActivitySpeed.class);
startActivity(intentS);
Toast.makeText(MainActivity.this,"Speed", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_vol :
Intent intentV = new Intent(MainActivity.this, InputActivityVolume.class);
startActivity(intentV);
Toast.makeText(MainActivity.this,"Vol", Toast.LENGTH_SHORT).show();
break;
}
}
}
如果我遗漏了一些可能有用的东西,请告诉我。
答案 0 :(得分:0)
当R失败时,通常错误是在xml中或可能找不到菜单,图像等资源。 您可以执行build>重建项目并附加错误。
祝你好运