Страница 1 из 1

Не получается отобразить SVG файл через intent

Добавлено: 26 сен 2013, 15:58
fundator
Помогите, пожалуйста понять, почему не происходит отображение SVG файла при передаче его из одной активности в другую. Библиотеку svgAndroid2.12Dec2011.jar подключил, файл в SVG формате поместил в raw.

Из:

Код: Выделить всё

[syntax=java]// нажатие на элемент expListView.setOnChildClickListener(new OnChildClickListener() {public boolean onChildClick(ExpandableListView parent, View v,
                int groupPosition, int childPosition, long id) {

            Intent intent = new Intent(FirstActivity.this,
                    SecondActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            if (groups[0] != null && items_groups_one[0] != null && id == 0)
                intent.putExtra(SecondActivity.PICTURE,
                        png_items_groups_one[0]);
            startActivity(intent);

            return false;
        }

    });[/syntax]
В:

Код: Выделить всё

[syntax=java]public class SecondActivity extends FirstActivity implements OnClickListener {
	public static final String PICTURE = "picture";

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);

		ImageView image = new ImageView(this);

		image = (ImageView) findViewById(R.id.aboutImage);
		image.setBackgroundColor(Color.WHITE);
		image.setImageDrawable(drawable);

	}

	Intent intent = getIntent();
	// Получаем данные от деятельности FirstActivity и парсим в SVG
	SVG svg = SVGParser.getSVGFromResource(getResources(),
			intent.getIntExtra(PICTURE, png_items_groups_one[0]));
	Drawable drawable = svg.createPictureDrawable();

}[/syntax]
Лог пишет:
  • 09-26 09:56:14.441: E/AndroidRuntime(1736): FATAL EXCEPTION: main
    09-26 09:56:14.441: E/AndroidRuntime(1736): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ua.fundator.i/ua.fundator.i.SecondActivity}: java.lang.NullPointerException
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.app.ActivityThread.access$600(ActivityThread.java:141)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.os.Handler.dispatchMessage(Handler.java:99)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.os.Looper.loop(Looper.java:137)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.app.ActivityThread.main(ActivityThread.java:5103)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at java.lang.reflect.Method.invokeNative(Native Method)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at java.lang.reflect.Method.invoke(Method.java:525)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at dalvik.system.NativeStart.main(Native Method)
    09-26 09:56:14.441: E/AndroidRuntime(1736): Caused by: java.lang.NullPointerException
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at ua.fundator.i.SecondActivity.<init>(SecondActivity.java:33)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at java.lang.Class.newInstanceImpl(Native Method)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at java.lang.Class.newInstance(Class.java:1130)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
    09-26 09:56:14.441: E/AndroidRuntime(1736): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
    09-26 09:56:14.441: E/AndroidRuntime(1736): ... 11 more

Re: Не получается отобразить SVG файл через intent

Добавлено: 26 сен 2013, 17:00
Foenix
Ошибка тут at ua.fundator.i.SecondActivity.<init>(SecondActivity.java:33)

не проинициализированная переменная выше этой строчки.

Re: Не получается отобразить SVG файл через intent

Добавлено: 26 сен 2013, 17:31
fundator
Без изменений...

Код: Выделить всё

[syntax=java]public class SecondActivity extends FirstActivity implements OnClickListener {
	public static final String PICTURE = "picture";

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);

		ImageView image = new ImageView(this);

		image = (ImageView) findViewById(R.id.aboutImage);
		image.setBackgroundColor(Color.WHITE);
		image.setImageDrawable(drawable);

	}

	Intent intent = getIntent();
	int imageId_one = intent.getIntExtra(PICTURE, png_items_groups_one[0]);
	// Получаем данные от деятельности FirstActivity и парсим в SVG
	SVG svg = SVGParser.getSVGFromResource(getResources(), imageId_one);
	Drawable drawable = svg.createPictureDrawable();[/syntax]
Причём SVGParser начинает "дышать" (появляется подсветка кода svg и drawable) только за границами метода onCreate.

Re: Не получается отобразить SVG файл через intent

Добавлено: 26 сен 2013, 17:44
Foenix
Щелкни два раза на строчку, которую я указала. Вней ищи переменную, которую ты ИСПОЛЬЗУЕШЬ, и которая равна null. Затем ищи - есть ли у тебя выше этой строчки какая-то попытка ее инициализировать (т.е. запихнуть в нее значение), если есть, то в этой строке что-то не находит, если нету, то придется создать..

Re: Не получается отобразить SVG файл через intent

Добавлено: 07 окт 2013, 20:45
fundator
Разобрался! Дело не в коде. Библиотека svgAndroid2.12Dec2011.jar "трефная".