2012-07-04 3 views
1

저는 프로젝트를 시작하고 있습니다. 앱이 실행될 때, 사용자가 다른 활동으로 이동하는 비디오를 누를 때 기본 액티비티에서 비디오를 재생하고 싶습니다. 사용자가 뒤로 버튼을 누르면 다시 메인 화면으로 이동하여 처음부터 비디오를 재생합니다. 비디오는 원시 디렉토리에 있습니다.사용자가 다시 액티비티로 돌아 왔을 때 Videoview가 시작되지 않음

문제는 동영상보기가 활동이 처음 생성 될 때 동영상을 재생하지만 사용자가 다른 활동 (내 경우에는 MenuSection 활동)에서 동영상으로 돌아갈 때가 아니라는 점입니다. 코드는 정말 간단하지만 난 어쨌든 그것을 붙여 넣습니다 :

public class MainActivity extends Activity { 
    private VideoView mVideoView; 
    LinearLayout menuSection; 
    @Override 

    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     mVideoView = (VideoView) findViewById(R.id.surface_view); 
     mVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.documentariesandyou)); 
     mVideoView.requestFocus(); 
     mVideoView.setMediaController(null); //i dont want the controls of the videoview. 
     mVideoView.start(); 
     menuSection = (LinearLayout) findViewById(R.id.menuSection); 
     menuSection.setOnClickListener(new menuSectionListener()); 

    } 

class menuSectionListener implements OnClickListener { 
    public void onClick(View v) { 
     Intent staticActivityIntent = new Intent(MainActivity.this, MenuSection.class); 
     startActivity(staticActivityIntent);   
    } 
} 

} 

MenuSection는에 "Hello World"와 같은 텍스트 뷰를 보여줍니다 단지 활동이다, 그래서 그것을 붙여 아니에요.

답변

2

이동 mVideoView.start();onResume() 대신 onCreate()에 :

@Override 
    protected void onResume() { 
     super.onResume(); 
     mVideoView.start(); 
    } 

Managing the Activity LifecycleonResume() 볼은 활동이 이미 활동의 onPause() 오버라이드 방법에

+0

onStart() 또는 onResume()이 모두 작동합니다. 하지만 onResume()을 사용하면 비디오가 포함 된 응용 프로그램에서 적어도 의도하지 않은 경우 비디오가 다시 시작되는 것을 발견했습니다. – FoamyGuy

+0

감사합니다. 질문은 정말 쉬웠습니다. 하지만 나는 안드로이드에 익숙하지 않고 활동과 물건의 모든 과정에 익숙해 져 있습니다. 고마워요! – AdolfoFermo

0

onCreate() 대신 mVideoView.start();에서 으로 이동하십시오.

개발자의 라이프 사이클 라이프 사이클에 대한 자세한 내용은 Activity Lifecycle을 참조하십시오.

확실하지 않지만 setVideoURI();onStart()으로 이동해야 할 수도 있습니다.

+0

어떻게이 경우에 onStart() 도움이 필요합니까? –

+0

@imrankhan 액티비티가 메모리에없는 경우에만 onCreate()가 호출되기 때문입니다. onStart()는 화면에 액티비티가 표시되기 바로 전에 호출됩니다.이 경우 사용자가 다른 곳에서 다시 액티비티를 탐색 할 때입니다. – FoamyGuy

1

전화 video.pause()을 실행하면 액티비티에서 호출과에 video.resume()를 호출한다 onResume() 귀하의 활동 방법.

관련 문제