почему это исключение: java.lang.RuntimeException: ошибка раздувания класса - PullRequest
0 голосов
/ 29 ноября 2011

Я пытаюсь разработать крошечное приложение для Android, которое просто открывает браузер для веб-сайта.Я использую Mac OS 10.6 и новейшие инструменты для Android / Eclipse.Но я получаю это исключение:

11-29 13: 03: 55.113: E / AndroidRuntime (1012): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.mycomp / com.mycomp.pack}: android.view.InflateException: строка двоичного XML-файла # 7: ошибка надувания класса com.mycomp.MyTextView

Вот мой код:

package com.mycomp;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;


public class myapp extends Activity {
/** Called when the activity is first created. */`

private MyTextView myview;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      
    Log.d("onCreate", "onCreate ");   

    myview  = (MyTextView)findViewById(R.id.myview);
    myview.setParent(this);
}




public static   class MyTextView extends TextView {
    private View mLastVisChangedView;
    private int mLastChangedVisibility;
    private Activity parent;

    public void setParent(Activity p){
        parent =p;

    }
    public MyTextView(Context context) {
        super(context);
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public View getLastVisChangedView() {
        return mLastVisChangedView;
    }

    public int getLastChangedVisibility() {
        return mLastChangedVisibility;
    }

    @Override
    protected void  onVisibilityChanged(View changedView, int visibility){
        Log.d("onVisibilityChanged", "new vis == " + visibility);
        if (parent !=null && visibility == View.VISIBLE){
            parent.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.mysite.com")));
            parent.moveTaskToBack(true);
        }
    }
}

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<com.mycomp.MyTextView
     android:id="@+id/myview"
      android:text="@string/hello"/>

</LinearLayout>

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Тип будет com.mycomp.myapp.MyTextView.(Или $, поскольку это внутренний класс?)

Вам также может понадобиться указать представление следующим образом:

<view class="com.mycomp.myapp$MyEditText" ...

Не думаю, что вам нужно onFinishInflateэто дело.

0 голосов
/ 29 ноября 2011

Вы должны поместить класс MyTextView в отдельный файл.Тогда com.mycomp.MyTextView будет правильным.

...