Android ViewRoot NullPointerException - PullRequest
0 голосов
/ 03 июня 2011

Это вызывает ошибку:

this.addContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.FILL_PARENT));

Не уверен, в чем проблема, вот след:

ViewRoot.draw(boolean) line: 1440   
ViewRoot.performTraversals() line: 1172 
ViewRoot.handleMessage(Message) line: 1736  
ViewRoot(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 143 
ActivityThread.main(String[]) line: 4701    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 521  
ZygoteInit$MethodAndArgsCaller.run() line: 860  
ZygoteInit.main(String[]) line: 618 
NativeStart.main(String[]) line: not available [native method]  

Вот мой код:

    public class LiveTabGroup extends ActivityGroup implements MoveToScreenNotification.handler
{

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        EventBus.subscribe(MoveToScreenNotification.class, this);

        View view = getLocalActivityManager().startActivity("CameraListView", new Intent(this,CameraListView.class).
                addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();

        this.setContentView(view);

    }

    @Override
    public void onMoveToScreenNotification(MoveToScreenNotification notif) 
    {
        if (notif.newScreen == MoveToScreenNotification.SCREEN_MOVIEPLAYER_LIVE)
        {
            SugarLoafSingleton.currentCamera.url = notif.videoURL;
            // Throw UI management on main thread
            runOnUiThread(new Runnable(){
            public void run()
            {
                StartPlayer();
            }
            });

        }

    }

    public void StartPlayer()
    {
        View view = getLocalActivityManager().startActivity("VideoPlayer", new Intent(this,VideoPlayerView.class).
                addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
        this.addContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
                ViewGroup.LayoutParams.FILL_PARENT));


    }


}

1 Ответ

2 голосов
/ 04 июня 2011

Я бы настоятельно рекомендовал переделать способ использования видеоплеера. Если вы просто хотите воспроизвести видео, используйте VideoView и вставьте его в макет XML. То, как вы запускаете действие и крадете его вид, похоже, что вы пытаетесь обойти фреймворк, что приведет к всевозможным дурацким ошибкам, подобным этому. Похоже, я не Я не очень хорошо понимаю. Тем не менее, я думаю, что это можно как-то упростить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...