2

조각에서 활동으로 이동하고 싶을 때 문제가 있습니다. 이건 내 코드입니다 :Android의 조각에서 활동으로 이동 오류

조각 :

public class details extends Fragment { 

    private Button btn_video; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

rootView = inflater.inflate(R.layout.details, container, false); 

btn_video = (Button) rootView.findViewById(R.id.btn_video); 

     btn_video.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(getActivity(), video.class); 
       startActivity(intent); 
      } 
     }); 

     return rootView; 
    } 

} 

활동 : 나는 비디오 디스플레이를 얻기 위해 왔어요

public class video extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.video); 

     final VideoView video = (VideoView) findViewById(R.id.video); 
     MediaController mediaController = new MediaController(this); 
     video.setMediaController(mediaController); 
     video.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.prueba)); 
     video.start(); 
    } 
} 

(I, 당신은 아래에 볼 수있는이 파일을 변경했습니다) 및 재현하지만, 응용 프로그램은 콘솔에 의해 닫혀 있습니다.이 활동은 스레드 내부에 있음을 알 수 있습니다. 나는 그 조각이 멈추지 않는다고 생각하고 나는이 재 장전을 생각한다. 이것은 예외입니다.

11-12 20:15:46.741 18249-18249/xxx.xxx.xxx.xxx/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: xxx.xxx.xxx.xxx, PID: 18249 
    java.lang.RuntimeException: Parcel: unable to marshal value [email protected] 
      at android.os.Parcel.writeValue(Parcel.java:1266) 
      at android.os.Parcel.writeList(Parcel.java:653) 
      at android.os.Parcel.writeValue(Parcel.java:1226) 
      at android.os.Parcel.writeArrayMapInternal(Parcel.java:618) 
      at android.os.Bundle.writeToParcel(Bundle.java:1692) 
      at android.os.Parcel.writeBundle(Parcel.java:636) 
      at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:134) 
      at android.os.Parcel.writeTypedArray(Parcel.java:1133) 
      at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:378) 
      at android.os.Parcel.writeParcelable(Parcel.java:1285) 
      at android.os.Parcel.writeValue(Parcel.java:1204) 
      at android.os.Parcel.writeArrayMapInternal(Parcel.java:618) 
      at android.os.Bundle.writeToParcel(Bundle.java:1692) 
      at android.os.Parcel.writeBundle(Parcel.java:636) 
      at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2755) 
      at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3414) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:146) 
      at android.app.ActivityThread.main(ActivityThread.java:5602) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
      at dalvik.system.NativeStart.main(Native Method) 

누군가이 문제에 대해 도움을줍니다. 또는 내가 실수를하는 곳을 말해줘.

미리 감사드립니다.

편집 : 당신이 유용 찾을 수 있다면

나는이 코멘트를 편집 할 수 있습니다. 좋아, 임시 수정을 발견했다. 그것은 다음과 같습니다 :

활동을 단편으로 변경했습니다.

공용 클래스 비디오 조각 {

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.video, container, false); 
    constants.setPrincipal(false); 

    // When I rotate the screen, I've a problem. 
    //getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

    ActionBar actionBar = (ActionBar) getActivity().getActionBar(); 
    actionBar.hide(); 

    VideoView video = (VideoView) rootView.findViewById(R.id.video); 
    MediaController mediaController = new MediaController(getActivity()); 
    video.setMediaController(mediaController); 
    video.setVideoURI(Uri.parse("android.resource://" + getActivity().getPackageName() + "/" + R.raw.prueba)); 
    video.start(); 

    return rootView; 
} 

}를 확장

내가 전체 화면 비디오 원하는 위해 나는 화면을 회전 할 때 때문에이 임시 수정 말한다. 주된 활동은 경관에서 이루어지며,이 재 장전입니다. 따라서 비디오를 세로로만 보여줄 수 있습니다. 나는 새로운 수정을 찾으려고 노력하고있다.

누군가 나를 도울 수 있다면. 감사.

UPDATE

나는 그것이 뭔가 다른했다, 오류를 발견가, 활동 정보가 다른 단편에서 번들을했다,이 번들은 ArrayList를했다.

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
Fragment fragment = new details(); 

Bundle bundle = new Bundle(); 
ArrayList<articulo> seleccionado= new ArrayList<articulo>(); 
seleccionado.add(((articulo) articulo)); 
bundle.putSerializable("variables", seleccionado); 
fragment.setArguments(bundle); 

fragmentTransaction.addToBackStack(null).hide(hide) 
     .replace(R.id.container, fragment).commit(); 

수정하려면 public static 변수를 사용하여 제품 데이터를 저장하십시오.

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
Fragment fragment = new details(); 

public static ArrayList<articulo> articuloDetails = new ArrayList<articulo>(); 
articuloDetails.add(((articulo) articulo)); 

fragmentTransaction.addToBackStack(null).hide(hide) 
     .replace(R.id.container, fragment).commit(); 

답변

0

당신은 그래도 난 틀렸다면

getActivity().startActivity(intent);

대신

startActivity(intent);

저를 수정 사용해야하지만 조각은 활동 안쪽에 항상이다. 그것이 바로 다른 Activity를 시작할 수있는 Activity를 호출해야하는 이유입니다. 이는 활동이 여러 단편을 보유 할 수 있지만 단편은 모든 활동을 보유 할 수 없기 때문일 수 있습니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 그러나 작동하지 않습니다. 맞아, getActivity()는 "Fragment"가 "Activity"안에 있다는 것을 잊어 버리십시오.나는 "Fragment"를 얻으려면 반환하는 예외가 하나의 묶음이 전달된다고 생각합니다. 내부에 비디오 버튼이 있는데 번들이 취소하지 않는다는 것을 알고 있습니다. 그렇습니까? –

+0

비디오 플레이어의 코드를 사용하지 않으면 Activity의로드가 잘 진행된다고 가정합니까? (단지 빈 활동입니다) – Albert

+0

예, 비디오는 비디오없이 또는 비디오없이 작동하지만 예외가 발생하면 좀 더 알기 쉽게 설명해 드리겠습니다. [link] (https://67c66fb66254f5d6b1c56b9af91d0027ae5ff291.googledrive.com/host /0Bxq_1DLJ8ud3Tjk1T3VaOTBOV3c/screenshot1.png) 고마워. –

관련 문제