Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android R在声明后无法解析为变量_Android_Eclipse - Fatal编程技术网

Android R在声明后无法解析为变量

Android R在声明后无法解析为变量,android,eclipse,Android,Eclipse,我已经将R声明为一个变量。然而,错误仍然存在。我清理了项目并重新启动了它,但没有任何改变。我是eclipse android编码的初学者。有人能帮我解决R变量吗 <receiver android:name=".SmsReceiver"> <intent-filter> <action android:name= "android.provider.Telephony.SMS_REC

我已经将R声明为一个变量。然而,错误仍然存在。我清理了项目并重新启动了它,但没有任何改变。我是eclipse android编码的初学者。有人能帮我解决R变量吗

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
Main.java

package com.example.smsmessaging;
import com.example.smsmessaging.R;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.telephony.gsm.SmsManager;


public class SMS extends Activity 
{

 Button btnSendSMS;
EditText txtPhoneNo;
EditText txtMessage;


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

    btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
    txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
    txtMessage = (EditText) findViewById(R.id.txtMessage);

    btnSendSMS.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
        {                
            String phoneNo = txtPhoneNo.getText().toString();
            String message = txtMessage.getText().toString();                 
            if (phoneNo.length()>0 && message.length()>0)                
                sendSMS(phoneNo, message);                
            else
                Toast.makeText(getBaseContext(), 
                    "Please enter both phone number and message.", 
                    Toast.LENGTH_SHORT).show();
        }
    });        
}    
public class SMS extends Activity 
{
    //...

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        //...
    }

    //---sends an SMS message to another device---
    private void sendSMS(String phoneNumber, String message)
    {        
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, SMS.class), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, pi, null);        
    }    
  }
  //---sends an SMS message to another device---
  private void sendSMS(String phoneNumber, String message)
  {         
    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
        new Intent(SENT), 0);

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
        new Intent(DELIVERED), 0);

    //---when the SMS has been sent---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS sent", 
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(getBaseContext(), "Generic failure", 
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(getBaseContext(), "No service", 
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(getBaseContext(), "Null PDU", 
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(getBaseContext(), "Radio off", 
                            Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }, new IntentFilter(SENT));

    //---when the SMS has been delivered---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS delivered", 
                            Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not delivered", 
                            Toast.LENGTH_SHORT).show();
                    break;                        
            }
        }
    }, new IntentFilter(DELIVERED));        

    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
   }
    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
xml:

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>

检查导入并删除代码中未使用的导入:
此行:
import com.example.smsmessaging.R

然后组织导入->Ctrl+Shift+O

就是这样…

检查导入并删除代码中未使用的导入:
    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
此行:
import com.example.smsmessaging.R

然后组织导入->Ctrl+Shift+O

就是这样…

删除行导入com.example.smsmessaging.R;我们不应该在我们的.java中导入它。

删除行import com.example.smsmessaging.R;我们不应该将其导入到.java中。

首先从gen文件夹中删除tour R.java文件。现在清理您的项目并导入android.R

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>

通过按Ctrl+Shift+O,可以先从gen文件夹中删除tour R.java文件,然后再执行其他导入操作。现在清理您的项目并导入android.R

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>

通过按Ctrl+Shift+O可以进行替代导入。您不应该导入R或将其定义为变量。
    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
引述自:

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
注意:Eclipse有时喜欢在使用资源的文件>顶部添加import android.R语句,特别是当您要求Eclipse排序或以其他方式管理导入时。>这将导致您的make崩溃。注意这些错误的导入语句并删除它们

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>

如果资源xml文件中没有错误,那么R应该自动可用。XML问题通常在Eclipse中报告。如果无法找出错误,请在此处发布xml文件。

不应导入R或将其定义为变量。
    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
引述自:

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
注意:Eclipse有时喜欢在使用资源的文件>顶部添加import android.R语句,特别是当您要求Eclipse排序或以其他方式管理导入时。>这将导致您的make崩溃。注意这些错误的导入语句并删除它们

    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>



如果资源xml文件中没有错误,那么R应该自动可用。XML问题通常在Eclipse中报告。如果您无法找出错误,请在此处发布您的xml文件。

检查资源文件中是否有错误也将sdk工具更新到最新版本。您正在使用类变量的名称:Button btnSendSMS;R.id.btnSendSMS您是否在xml文件中为该按钮指定了相同的id名称,如:android:id=“@+id/btnSendSMS”清理项目并重新启动Eclipse。如果问题仍然存在,那么如果资源文件中有错误,通常是xml文件中的错误,则通常会发生更新SDK toolsR错误。仔细检查每个文件,你就会发现错误。然后清理项目,就可以开始了。检查资源文件中是否有任何错误也将sdk工具更新到最新版本;R.id.btnSendSMS您是否在xml文件中为该按钮指定了相同的id名称,如:android:id=“@+id/btnSendSMS”清理项目并重新启动Eclipse。如果问题仍然存在,那么如果资源文件中有错误,通常是xml文件中的错误,则通常会发生更新SDK toolsR错误。仔细检查每个文件,你就会发现错误。然后只要清理项目就可以了。为什么不应该导入删除后R仍然不是一个变量。清理项目将重建资源(R)文件,然后就不需要导入R。检查此线程:感谢您提供的信息。我刚刚删除了R导入。但是,现在无法解决主要问题:(我需要在xml文件中包含任何内容吗?为什么不导入删除后R仍然不是一个变量。清理项目将重建资源(R)文件,然后您就不需要导入R。检查此线程:谢谢您提供的信息。我刚刚删除了R导入。但是,现在无法解决主要问题:(我需要在我的xml文件中包含任何内容吗?我已经删除了行,但是R仍然没有解析为变量。还要检查您的所有xml文件中是否存在任何错误。这可能会解决您的问题。关闭所有文件,清理项目,重新启动Eclipse。我又做了一次。R被解析为变量。但main没有。以及“公共类SMS扩展活动”SMS错误说明必须定义公共类型:((我已经删除了该行,但R仍然没有解析为变量。同时检查您的所有xml文件中是否存在任何错误。这可能会解决您的问题。关闭所有文件,清理项目,重新启动Eclipse。我再次执行了该操作。R解析为变量。但main没有。并且“公共类SMS扩展活动”“SMS错误说明必须定义公共类型:((R现在可以解析,但主类型不是。)“公共类SMS扩展活动”SMS错误说明必须定义公共类型:((R现在可以解析,但主类型不是。)“公共类SMS扩展活动”SMS错误说明必须定义公共类型:((是的,原因可能是其中一个资源xml表中存在错误。如果您可以发布这些内容,这里的人可能可以更好地对其进行评论。等等;main没有解决?您指的是什么“main”?你能给出准确的错误吗?我几乎可以肯定你指的是R.layout.main。如果是这样,那么每个人都会对该xml感兴趣。是的!R.layout.main!删除R导入后,main被声明为“无法解析为变量”,因此在这种情况下,发布该布局是正确的
    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>

</application>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>