我使用后台服务和广播接收器制作应用,我的应用包含myServiceRunner.java
和android.content.res.Resources$NotFoundException: String resource id #0x64
。当我启动后台服务时,它会给我这个错误 IntentFilter mainFilter=new IntentFilter("liren.action.GOSERVICE3");
receiver=new MyMainLocalReceiver();
registerReceiver(receiver, mainFilter);
。
我将这些代码放在protected void onCreate(Bundle savedInstanceState)中:
public class MyMainLocalReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
try
{
int serviceData=intent.getIntExtra("serviceData",0);
//Toast.makeText(getApplicationContext(), serviceData,Toast.LENGTH_SHORT).show();
tvStepsCount.setText(serviceData);
}
catch (Exception e)
{
tvStepsCount.setText(e.toString());
}
}
}
MyMainLocalReceiver.java
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Thread triggerService=new Thread(new Runnable() {
@Override
public void run() {
for(;;)
{
try
{
Intent myFilteredResponse = new Intent("liren.action.GOSERVICE3");
myFilteredResponse.putExtra("serviceData",100);
sendBroadcast(myFilteredResponse);
Thread.sleep(5000);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
});
triggerService.start();
return super.onStartCommand(intent, flags, startId);
}
在myServiceRunner中扩展了Service类,我在onStartCommand方法中添加了这些代码。
<service android:name=".myServiceRunner"></service>
<receiver android:name=".RecordSaved$MyMainLocalReceiver"></receiver>
的manifest.xml
我添加了这些:
<?php if(isset($_POST['submit'])) {
$count=count($_FILES["images"]["name"]);
for($i=0;$i<$count;$i++) { if ((($_FILES["images"]["type"][$i] == "image/gif") || ($_FILES["images"]["type"][$i] == "image/jpeg") || ($_FILES["images"]["type"][$i] == "image/pjpeg")) && ($_FILES["images"]["size"][$i] < 100000)) {
if ($_FILES["images"]["error"][$i] > 0) { echo "File Error : " . $_FILES["images"]["error"][$i] . "<br />"; } else { echo "Upload File Name: " . $_FILES["images"]["name"][$i] . "<br />"; echo "File Type: " . $_FILES["images"]["type"][$i] . "<br />"; echo "File Size: " . ($_FILES["images"]["size"][$i] / 1024) . " Kb<br />";
if (file_exists("public/images/".$_FILES["images"]["name"][$i] )) { echo "<b>".$_FILES["images"]["name"][$i] . " already exists. </b>"; } else {
move_uploaded_file($_FILES["images"]["tmp_name"][$i] ,"public/images/". $_FILES["images"]["name"][$i] );
echo "Stored in: " . "public/images/" . $_FILES["images"]["name"][$i] ."<br />"; ?> Uploaded File:<br> <img src="public/images/<?php echo $_FILES["images"]["name"][$i] ; ?>" alt="Image path Invalid" > <?php } } }else { echo "Invalid file detail ::<br> file type ::".$_FILES["images"]["type"][$i] ." , file size::: ".$_FILES["images"]["size"][$i] ; } } }?>
我无法弄清楚错误,有人可以帮我吗?谢谢:))
答案 0 :(得分:5)
您正在使用.SetText()
。但是你传递int
类型。这是一个问题。所以你需要转换int to String
尝试,
tvStepsCount.setText("" + serviceData); // concat with empty string
答案 1 :(得分:1)
正如您在TextView类中看到的,TextView.setText()方法的第一个参数可以是resId,即整数或char序列或char数组。因此,当您将Integer值传递给TexView.setText()时,android studio不会显示错误或警告。
在您的代码中tvStepsCount.setText(serviceData);
serviceData是一个整数类型,android将此值视为 resId 并在R类中查找相应的资源。由于serviceData不是resId,实际上android返回 Resources $ NotFoundException 。
因此,在这种情况下,我们需要将serviceData显式转换为 String 类型。
答案 2 :(得分:0)
您也可以这样做:
tvStepsCount.setText(String.valueOf(serviceData));