2017-08-17 3 views
0

Vielen Dank für die aufmerksamkeit: D Helfen Sie mir damit, wie Sie können pls. Also hier ist was ich tun möchte. Ich habe vier Fragmente und eine Aktivität. Ich spiele ein Live-Video im ersten Fragment, und es funktioniert gut. Aber wenn ich das erste Fragment durch ein anderes ersetze, spielt das Video des ersten Fragments immer noch im Hintergrund. Was ich machen möchte, ist dieses Video in all meinen Fragmenten zu spielen, aber mit unterschiedlichen Größen und ohne gegenseitige Beeinflussung. Wie kann ich das machen? Hier ist mein Code.wenn ersetzen ein fragment video ist noch spielen hintergrund in android

Erster Teil des Code

public class FTop2 extends Fragment { 
String Tag = "FTop2"; 
CallbackManager callbackManager; 
ShareDialog shareDialog; 
ProgressDialog progressDialog; 





public FTop2() {} 
protected void facebookSDKInitialize() { 

    FacebookSdk.sdkInitialize(getContext()); 

    callbackManager = CallbackManager.Factory.create(); 
} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    facebookSDKInitialize(); 
    Twitter.initialize(getActivity()); 

} 

private class HttpUrl extends AsyncTask<Integer, Void, ArrayList<LiveUrl>> { 
    @Override 
    protected ArrayList<LiveUrl> doInBackground(Integer... i) { 
     return XmlPrepareClient.getTickedId("cid0003","1","1"); 
    } 

    @Override 
    protected void onPostExecute(ArrayList<LiveUrl> result) { 
     for (int i=0; i<result.size();i++) { 
      String txt = result.get(i).url; 
      Log.e("play url", Config.B64decodeStr(txt)); 
     } 

     VideoView vid = (VideoView) getView().findViewById(R.id.videoView); 

     String vid_url = Config.B64decodeStr(result.get(0).url); 
     Uri vid_uri = Uri.parse(vid_url); 
     vid.setVideoURI(vid_uri); 
     vid.start(); 
     MediaController vid_control = new MediaController(getContext()); 
     vid_control.setAnchorView(vid); 
     vid.setMediaController(vid_control); 

     if (progressDialog.isShowing()) { 
      progressDialog.hide(); 
     } 


    } 
} 

@Override 
public View onCreateView(LayoutInflater i, ViewGroup c,Bundle s) { 
    Bundle bundle = this.getArguments(); 
    final int channel= bundle.getInt("channel"); 
    final String cat= bundle.getString("cat"); 
    final String img= bundle.getString("img"); 

    shareDialog = new ShareDialog(this); 
    View view = i.inflate(R.layout.f_top2, c, false); 

    progressDialog = Config.getProgressDialog(getContext()); 
    if(Config.isNetworkAvailable(getContext())) { 
     if (!progressDialog.isShowing()) progressDialog.show(); 
     new HttpUrl().execute(); 
    }else { 
     Config.ToastNet(getContext()); 
    } 




    ImageView btnBack = (ImageView) view.findViewById(R.id.btn_dismiss); 
    btnBack.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      getFragmentManager().popBackStack(); 

     } 
    }); 

    ImageView btnDetail = (ImageView) view.findViewById(R.id.btn_detail); 
    btnDetail.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     getFragmentManager().beginTransaction() 
       .replace(android.R.id.content, new FTop2_1()).addToBackStack(Tag).commit(); 

     } 
    }); 

    ImageView btnProgram = (ImageView) view.findViewById(R.id.btn_program); 
    btnProgram.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      getFragmentManager().beginTransaction() 
        .replace(android.R.id.content, new FTop2_2()).addToBackStack(Tag).commit(); 
     } 
    }); 

    ImageView btnComment = (ImageView) view.findViewById(R.id.btn_comment); 
    btnComment.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      getFragmentManager().beginTransaction() 
        .replace(android.R.id.content, new FTop2_3()).addToBackStack(Tag).commit(); 
     } 
    }); 

zweiten Fragments Code

public class FTop2_1 extends Fragment { 
LinearLayout line; 
TextView txt; 
ArrayList<TV> datas = new ArrayList<>(); 
ListView list; 
ProgressDialog progressDialog; 
boolean isTablet; 
public FTop2_1() {} 
@Override 
public void onCreate(Bundle s) { 
    super.onCreate(s); 
} 


private class HttpTask extends AsyncTask<Integer, Void, ArrayList<TV>> { 
    @Override 
    protected ArrayList<TV> doInBackground(Integer... params) { 
     return PrepareClient.postTV(params[0]); 
    } 

    @Override 
    protected void onPostExecute(ArrayList<TV> result) { 
     datas = result; 
     Adapter listAdapter1 = new Adapter(getContext(), R.layout.f_top2_1_item, datas); 

     ViewGroup.LayoutParams layoutParams = list.getLayoutParams(); 
     if(!isTablet) 
      layoutParams.height = 160*result.size(); 
     list.setLayoutParams(layoutParams); 

     list.setAdapter(listAdapter1); 
     if (progressDialog.isShowing()) { 
      listAdapter1.notifyDataSetChanged(); 
      progressDialog.hide(); 
     } 
    } 
} 

private class HttpUrl extends AsyncTask<Integer, Void, ArrayList<LiveUrl>> { 
    @Override 
    protected ArrayList<LiveUrl> doInBackground(Integer... i) { 
     return XmlPrepareClient.getTickedId("cid0003","1","1"); 
    } 

    @Override 
    protected void onPostExecute(ArrayList<LiveUrl> result) { 
     for (int i=0; i<result.size();i++) { 
      String txt = result.get(i).url; 
      Log.e("play url", Config.B64decodeStr(txt)); 
     } 

     VideoView vid = (VideoView) getView().findViewById(R.id.videoView); 

     String vid_url = Config.B64decodeStr(result.get(0).url); 
     Uri vid_uri = Uri.parse(vid_url); 
     vid.setVideoURI(vid_uri); 
     vid.start(); 
     MediaController vid_control = new MediaController(getActivity()); 
     vid_control.setAnchorView(vid); 
     vid.setMediaController(vid_control); 

     if (progressDialog.isShowing()) { 
      progressDialog.hide(); 
     } 


    } 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle s) { 
    View view = inflater.inflate(R.layout.f_top2_1, container, false); 
    Button btnBack = (Button) view.findViewById(R.id.back); 
    btnBack.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      getFragmentManager().popBackStack(); 
     } 
    }); 
    isTablet = getResources().getBoolean(R.bool.isTablet); 
    list = (ListView) view.findViewById(R.id.list); 
    if(!isTablet) 
     list.setEnabled(false); 

    progressDialog = Config.getProgressDialog(getContext()); 

    if(Config.isNetworkAvailable(getContext())) { 
     if (!progressDialog.isShowing()) progressDialog.show(); 
     new HttpTask().execute(1); 
     new HttpUrl().execute(); 
    }else{ 
     Config.ToastNet(getContext()); 
    } 

    line = (LinearLayout) view.findViewById(R.id.line); 
    line.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; 
    ViewGroup.LayoutParams params = line.getLayoutParams(); 
    params.height = 300; 
    line.setLayoutParams(params); 

    txt = (TextView) view.findViewById(R.id.text_toggle); 
    ImageView toggle = (ImageView) view.findViewById(R.id.toggle); 
    toggle.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (Integer.parseInt(String.valueOf(line.getHeight())) == 300) { 
       line.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; 
       ViewGroup.LayoutParams params = line.getLayoutParams(); 
       params.height = ViewGroup.LayoutParams.WRAP_CONTENT; 
       line.setLayoutParams(params); 
      } else { 

       line.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; 
       ViewGroup.LayoutParams params = line.getLayoutParams(); 
       params.height = 300; 
       line.setLayoutParams(params); 
      } 
     } 
    }); 

    return view; 
} 

public class Adapter extends ArrayAdapter<TV> { 
    private LayoutInflater inflater; 
    private ArrayList<TV> records; 

    public Adapter(Context context, int resource, ArrayList<TV> datas) { 
     super(context, resource, datas); 
     this.records = datas; 
     inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public int getCount() { 
     return records.size(); 
    } 

    public TV getItem(int position) { 
     return records.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, @NonNull ViewGroup parent) { 
     if(convertView == null) 
      convertView = inflater.inflate(R.layout.f_top2_1_item, parent, false); 
     TV result = records.get(position); 

     ((TextView)convertView.findViewById(R.id.desc1)).setText(result.time); 
     ((TextView)convertView.findViewById(R.id.desc2)).setText(result.subtitle); 
     ImageView img = (ImageView) convertView.findViewById(R.id.img2); 
     Picasso.with(getContext()) 
       .load(result.icon) 
       .placeholder(R.drawable.no_image) 
       .error(R.drawable.no_image) 
       .into(img); 
     return convertView; 
    } 


} 
} 

Antwort

1

@Override public void onDetach() {

if(vid.isPlaying()) { 
    vid.stopPlayback(); 

} }

Verwandte Themen