A
astro-android
Neues Mitglied
- 2
Hallo, liebes Forum,
Bin mit der Programmierung von Android noch nicht lange zugange, um es mal vorweg zu nehmen.
Programmieren kann ich aber schon lange. Jedenfalls im Moment bin ich ziemlich gefrustet, weil meine App appstürzt. Ich habe jetzt 2 Tage lang versucht, den Fehler zu finden und habe dafür das Internet auf links gedreht.
Ich hoffe, dass jemand mir hier auf die Sprünge helfen kann. Die Sache ist eigentlich ziemlich simpel:
In einem einfachen ViewPager gibt es 3 Seiten. Eine davon ist eine eigene View,
in der ich eine Grafik zyklisch aktualisieren will. Die App wird zwar ohne Probleme compiliert, stürzt dann aber auf meinem Nexus7 ab (auch auf einem Motorola Pro+ - Smartphone).
Hier der Code:
Activity:
der Page-Adapter:
die Java-View:
und das XML-Layout:
das LogCat hierzu:
Es würde mich wirklich sehr freuen, wenn mir da jemand weiterhelfen könnte !
Grüsse
ein gefrusteter Manfred Kreuß
Bin mit der Programmierung von Android noch nicht lange zugange, um es mal vorweg zu nehmen.
Programmieren kann ich aber schon lange. Jedenfalls im Moment bin ich ziemlich gefrustet, weil meine App appstürzt. Ich habe jetzt 2 Tage lang versucht, den Fehler zu finden und habe dafür das Internet auf links gedreht.
Ich hoffe, dass jemand mir hier auf die Sprünge helfen kann. Die Sache ist eigentlich ziemlich simpel:
In einem einfachen ViewPager gibt es 3 Seiten. Eine davon ist eine eigene View,
in der ich eine Grafik zyklisch aktualisieren will. Die App wird zwar ohne Probleme compiliert, stürzt dann aber auf meinem Nexus7 ab (auch auf einem Motorola Pro+ - Smartphone).
Hier der Code:
Activity:
Code:
package de.test.check;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.support.v4.view.ViewPager;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.SurfaceView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class Check extends Activity implements TextToSpeech.OnInitListener{
public static Locale loc;
public static String sloganString;
public static int counter = 0;
public static TextToSpeech tts;
public static Graphic graphicView;
@TargetApi(14)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Config.context = this;
loc = Locale.getDefault();
// Initialize Text To speech
tts = new TextToSpeech(Config.context, Config.context);
sloganString = Config.context.getResources().getString(R.string.start_slogan);
Graphic view = new Graphic(Config.context);
List<View> viewPages = new ArrayList<View>();
ViewPager viewPager = new ViewPager(Config.context);
setContentView(view);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View viewPage = inflater.inflate(R.layout.page_1, null);
TextView preambleView = (TextView) viewPage.findViewById(R.id.page1_view);
CharSequence styledText = Html.fromHtml(getResources().getString(R.string.preamble));
preambleView.setText(styledText);
viewPages.add(viewPage);
viewPage = inflater.inflate(R.layout.page_2, null);
graphicView = (Graphic) viewPage.findViewById(R.id.page2_view);
viewPages.add(viewPage);
viewPage = inflater.inflate(R.layout.page_3, null);
ImageView legendView = (ImageView) viewPage.findViewById(R.id.page3_view);
viewPages.add(viewPage);
PageAdapter pageAdapter = new PageAdapter(viewPages);
viewPager.setAdapter(pageAdapter);
viewPager.setCurrentItem(1);
//DoIt.all();
//UpdateNow.update.sendEmptyMessage(0); /// Starten
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public void onInit(int success) {
if(success == TextToSpeech.SUCCESS){
if(tts.isLanguageAvailable(loc) >= TextToSpeech.LANG_AVAILABLE){
tts.setLanguage(loc);
SpeakIt.now(Check.sloganString);
}
}
else{
tts.shutdown();
tts = null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (tts != null) {
tts.stop();
tts.shutdown();
tts = null;
}
}
}
Code:
package de.test.check;
import java.util.List;
import android.os.Parcelable;
import android.support.v4.view.ViewPager;
import android.support.v4.view.PagerAdapter;
import android.view.View;
public class PageAdapter extends PagerAdapter{
List<View> pages = null;
public PageAdapter(List<View> pages){
this.pages = pages;
}
@Override
public Object instantiateItem(View collection, int position){
View v = pages.get(position);
((ViewPager) collection).addView(v, 0);
return v;
}
@Override
public void destroyItem(View collection, int position, Object view){
((ViewPager) collection).removeView((View) view);
}
@Override
public int getCount(){
return pages.size();
}
@Override
public boolean isViewFromObject(View view, Object object){
return view.equals(object);
}
@Override
public void finishUpdate(View arg0){
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1){
}
@Override
public Parcelable saveState(){
return null;
}
@Override
public void startUpdate(View arg0){
}
}
Code:
package de.test.check;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
public class Graphic extends SurfaceView implements Callback {
public static SurfaceView graphicsView;
private SurfaceHolder holder;
private Canvas canvas;
private Paint paint;
private Thread th;
private boolean isRunning = false;
public static void putGraphic(){
}
public Graphic(Context context) {
super(context);
init();
}
public void init(){
holder = this.getHolder();
holder.addCallback(this);
paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
//Thread zum Zeichnen
new Thread(new Runnable() {
public void run(){
while(isRunning)
{
draw(canvas);
try{
Thread.sleep(50);
} catch (InterruptedException e){}
}
}
}).start();
isRunning = true;
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
public void surfaceCreated(SurfaceHolder holder) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
public void draw(Canvas c) {
c = holder.lockCanvas();
if(c != null) {
c.drawColor(Color.LTGRAY);
c.drawCircle(400, 450, 350, paint);
holder.unlockCanvasAndPost(c);
}
}
}
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="... Link darf hier nicht"/schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ddd"
android:orientation="vertical"
android:padding="@dimen/padding_layout">
[COLOR=Red] <de.astropartie.check.Graphic[/COLOR] [B][COLOR=Red]<< Fehler ![/COLOR][/B]
android:id="@+id/page2view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/textView1"
android:layout_alignParentTop="true"
android:background="#888"/>
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/textView1"
android:layout_below="@+id/page2_view"
android:background="#ddd"
android:text="@string/button_next"
android:textColor="@color/col_back_view_1"
android:textSize="@dimen/preamble_text_size"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignTop="@+id/textView1"
android:background="#ddd"
android:text="@string/button_back"
android:textColor="@color/col_back_view_1"
android:textSize="@dimen/preamble_text_size"/>
</RelativeLayout>
Code:
11-02 12:10:19.196: I/TextToSpeech(22877): Sucessfully bound to com.google.android.tts
11-02 12:10:19.346: D/AndroidRuntime(22877): Shutting down VM
11-02 12:10:19.346: W/dalvikvm(22877): threadid=1: thread exiting with uncaught exception (group=0x40c9b300)
11-02 12:10:19.396: E/AndroidRuntime(22877): [COLOR=Red]FATAL EXCEPTION[/COLOR]: main
11-02 12:10:19.396: E/AndroidRuntime(22877): java.lang.RuntimeException: [COLOR=Red]Unable to start activity [/COLOR]
ComponentInfo{de.test.check/de.test.check.Check}: android.view.InflateException:
Binary [COLOR=Red]XML file line #10: Error inflating class de.test.check.Graphic[/COLOR]
Grüsse
ein gefrusteter Manfred Kreuß
