[英]Eclipse Juno Android Error, styles.xml error
我最近购买了24小时内的Sams Teach Yourself Android游戏编程。 我目前正在学习为位图图像集设置动画。 完整的代码是:
package com.example.demojava1;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
public class MainActivity extends Activity {
/****************************************************************
* This portion of code represents the "outer" main program. *
* *
* Events here are passed on to the drawing sub-class. *
****************************************************************/
//defines the drawing sub-class object
DrawView drawView;
//onCreate is called any time the program resumes
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//create the drawing object
drawView = new DrawView(this);
setContentView(drawView);
}
//handle resume/focus events
@Override public void onResume() {
super.onResume();
//pass the resume event on to the sub-class
drawView.resume();
}
//handle pause/minimize events
@Override public void onPause() {
super.onPause();
//pass the pause event on to the sub-class
drawView.pause();
}
/*************************************
* End of "outer" main program code. *
*************************************/
/****************************************************************
* This code represents the new DrawView subclass which handles *
* the real-time loop, updates, and drawing, i.e. the game *
* code. Note that this class now implements Runnable to give *
* it a threaded loop. *
****************************************************************/
public class DrawView extends SurfaceView implements Runnable {
//define the game loop thread
Thread gameloop = null;
//define the surface holder
SurfaceHolder surface;
//define the running variable
volatile boolean running = false;
//the asset manager handles resource loading
AssetManager assets = null;
BitmapFactory.Options options = null;
Bitmap gKnight[];
int frame = 0;
//this is the DrawView class constructor
public DrawView(Context context) {
super(context);
//get the SurfaceHolder object to supply a context
surface = getHolder();
//create the asset manager object
assets = context.getAssets();
//set bitmap color depth option
options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
//create the bitmap array for animation
gKnight = new Bitmap[8];
//load the knight bitmaps
try {
for (int n = 0; n<8; n++) {
String filename = "walking" + Integer.toString(n+1) + ".bmp";
InputStream istream = assets.open(filename);
gKnight[n] = BitmapFactory.decodeStream(istream,null,options);
istream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
//custom resume method called by outer class
public void resume() {
running = true;
gameloop = new Thread(this);
gameloop.start();
}
//custom pause method called by outer class
public void pause() {
running = false;
while (true) {
try {
//just keep doing this until app has focus
gameloop.join();
}
catch (InterruptedException e) {}
}
}
//this is the threaded method
@Override public void run() {
//this is the game loop!
while (running) {
//make sure surface is usable (it's asynchronous)
if (!surface.getSurface().isValid())
continue;
//request the drawing canvas
Canvas canvas = surface.lockCanvas();
/************************************************************
* We should really make sure canvas is not null here *
* before continuing, but if canvas is invalid then *
* the game will cease anyway. *
************************************************************/
//draw one frame of animation from the knight array
canvas.drawColor(Color.rgb(85,107,47));
canvas.drawBitmap(gKnight[frame], 0, 0, null);
//draw the knight scaled larger
Rect dest = new Rect(100, 0, 300, 200);
canvas.drawBitmap(gKnight[frame], null, dest, null);
//draw the knight scaled REALLY BIG!
dest = new Rect(200, 0, 800, 600);
canvas.drawBitmap(gKnight[frame], null, dest, null);
//release the canvas
surface.unlockCanvasAndPost(canvas);
//go to the next frame of animation
frame++;
if (frame > 7) frame = 0;
try {
//slow down the animation
Thread.sleep(50);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} // end of DrawView sub-class code;
} //end of main
这是绿色骑士行走的简短动画的代码。 在那组特定的代码上没有出现错误。 但是,在以下文件的“打包浏览器”中:
ProjectFolder > res > values > styles.xml
ProjectFolder > res > values-v11 > styles.xml
ProjectFolder > res > values-v14 > styles.xml
第一个文件的代码是:
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
错误出现在代码读取的位置:
<style name = "AppBaseTheme" parent = "Theme.AppCompat.Light">
错误状态: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.
有人可以帮忙吗? 如果您有解决方案,虽然我在Java方面取得了长足的进步,但我从未使用过xml编码,而且我对Android完全陌生,所以这对我来说很困难。 遍历越详细越好。 谢谢!
嗨,坦率地说,您需要appCompatfor Theme.AppCompat.Light请执行以下步骤
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.