Android R在声明后无法解析为变量
我已经将R声明为一个变量。然而,错误仍然存在。我清理了项目并重新启动了它,但没有任何改变。我是eclipse 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
<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>