Android库中的R库错误

时间:2014-09-17 18:30:50

标签: java android eclipse

我一直在使用这个Android Guide

到目前为止,这是一次愉快的经历,但我遇到了第一个问题。我复制了链接中源代码中的所有代码,并将其粘贴到项目文件夹中,替换了所有旧文件。

在开始理解我粘贴的内容之前,我认为首先运行代码以检查问题是合乎逻辑的。由于缺少R对象,项目将无法运行。导入后(Eclipse的问题解决方案),弹出更多错误。我试着在互联网和书中寻找答案,但无济于事。

由于我的软件是最新的,我怀疑这是软件方面的问题。由于代码可以在线获取,我认为问题会出现并修复。

提前感谢您的帮助。有关其他详细信息,请在评论中提问。

The code:

    MainActivity.java

        package com.dummies.android.silentmodetoggle;

        import android.app.Activity;
        import android.graphics.drawable.Drawable;
        import android.media.AudioManager;
        import android.os.Bundle;
        import android.util.Log;
        import android.view.View;
        import android.widget.Button;
        import android.widget.ImageView;

        public class MainActivity extends Activity {

        private AudioManager mAudioManager; 
        private boolean mPhoneIsSilent;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);

            checkIfPhoneIsSilent(); 

            setButtonClickListener();

            Log.d("SilentModeApp", "This is a test");
        }    

        private void setButtonClickListener() {
         Button toggleButton = (Button)findViewById(R.id.toggleButton); 
         toggleButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (mPhoneIsSilent) {
                    // Change back to normal mode
                    mAudioManager
                            .setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                    mPhoneIsSilent = false;
                } else {
                    // Change to silent mode
                    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                    mPhoneIsSilent = true;
                }

                // Now toggle the UI again
                toggleUi();
            }
        }); 
       }

    /**
     * Checks to see if the phone is currently in silent mode. 
     */
    private void checkIfPhoneIsSilent() {
        int ringerMode = mAudioManager.getRingerMode();
        if (ringerMode == AudioManager.RINGER_MODE_SILENT) {
            mPhoneIsSilent = true;
        } else {
            mPhoneIsSilent = false;
        }

    }

    /**
     * Toggles the UI images from silent
     * to normal and vice versa.
     */
    private void toggleUi() {

        ImageView imageView = 
            (ImageView) findViewById(R.id.phone_icon);
        Drawable newPhoneImage;

        if (mPhoneIsSilent) {
            newPhoneImage = 
                getResources().getDrawable(R.drawable.phone_silent);

        } else {
            newPhoneImage = 
                getResources().getDrawable(R.drawable.phone_on);
        }

        imageView.setImageDrawable(newPhoneImage);
    }

    @Override
    protected void onResume() {
        super.onResume();
        checkIfPhoneIsSilent();
        toggleUi();
    };
}

2 个答案:

答案 0 :(得分:2)

尝试清理您的项目,这将重建您的R文件。如果文件树中仍然没有R文件,那么您的xml布局文件中可能会出错。 Eclipse可能不会告诉您这一点,所以请保持警惕并检查/ res文件夹中的所有文件。

当发生这种情况时,从不>导入R.

答案 1 :(得分:0)

您是否检查 /res/values/string.xml 中是否存在名为 action_settings 的变量,如果它不存在请创建一个然后使用项目清理 - >清理自动构建的makeure