@Override
 public void onClick(View v) {
   if (v.getId() == R.id.del) {
     del();
   } else if (v.getId() == R.id.hør) {
     hør();
   } else if (v.getId() == R.id.hent) {
     hent();
   } else if (v.getId() == R.id.info) {
     visInfo = true;
     bygListe();
   } else if (v.getId() == R.id.titel) {
     TextView titel = (TextView) v;
     titel.setText(udsendelse.beskrivelse);
     Linkify.addLinks(titel, Linkify.WEB_URLS);
   } else if (v.getId() == R.id.playliste) {
     visInfo = false;
     bygListe();
   } else if (v.getId() == R.id.vis_hele_playlisten) {
     visHelePlaylisten = true;
     bygListe();
   } else if (v.getId() == R.id.favorit) {
     CheckBox favorit = (CheckBox) v;
     DRData.instans.favoritter.sætFavorit(udsendelse.programserieSlug, favorit.isChecked());
     if (favorit.isChecked()) App.kortToast(R.string.Programserien_er_føjet_til_favoritter);
     Log.registrérTestet("Valg af favoritprogram", udsendelse.programserieSlug);
   } else {
     App.langToast("fejl");
   }
 }
  private void hent() {
    try {
      int tilladelse =
          App.instans
              .getPackageManager()
              .checkPermission(
                  Manifest.permission.WRITE_EXTERNAL_STORAGE, App.instans.getPackageName());
      if (tilladelse != PackageManager.PERMISSION_GRANTED) {
        AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
        ab.setTitle("Tilladelse mangler");
        ab.setMessage(
            "Du kan give tilladelse til eksternt lager ved at opgradere til den seneste version");
        ab.setPositiveButton(
            "OK, opgrader",
            new AlertDialog.OnClickListener() {
              public void onClick(DialogInterface arg0, int arg1) {
                Intent i =
                    new Intent(
                        Intent.ACTION_VIEW,
                        Uri.parse("https://play.google.com/store/apps/details?id=dk.dr.radio"));
                startActivity(i);
              }
            });
        ab.setNegativeButton("Nej tak", null);
        ab.show();

        return;
      }
    } catch (Exception e) {
      Log.rapporterFejl(e);
    }

    Cursor c = DRData.instans.hentedeUdsendelser.getStatusCursor(udsendelse);
    if (c != null) {
      c.close();
      // Skift til Hentede_frag
      try {
        FragmentManager fm = getActivity().getSupportFragmentManager();
        // Fjern IKKE backstak - vi skal kunne hoppe tilbage hertil
        // fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.indhold_frag, new Hentede_udsendelser_frag());
        ft.addToBackStack(null);
        ft.commit();
        Sidevisning.vist(Hentede_udsendelser_frag.class);
      } catch (Exception e1) {
        Log.rapporterFejl(e1);
      }

      return;
    }
    if (!udsendelse.kanHentes) {
      App.kortToast(R.string.Udsendelsen_kan_ikke_hentes);
      Log.rapporterFejl(
          new IllegalStateException("Udsendelsen kan ikke hentes - burde ikke kunne komme hertil"));
      return;
    }
    DRData.instans.hentedeUdsendelser.hent(udsendelse);
  }
  @Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    kanal = DRData.instans.grunddata.kanalFraKode.get(getArguments().getString(Kanal_frag.P_kode));
    udsendelse = DRData.instans.udsendelseFraSlug.get(getArguments().getString(DRJson.Slug.name()));
    if (udsendelse == null) {
      if (!App.PRODUKTION)
        Log.rapporterFejl(
            new IllegalStateException("afbrydManglerData " + getArguments().toString()));
      afbrydManglerData();
      return rod;
    }
    if (kanal == null) kanal = udsendelse.getKanal();
    if ("".equals(kanal.slug)) {
      Log.d("Kender ikke kanalen");
    }

    if (App.fejlsøgning) App.kortToast(udsendelse.programserieSlug);
    blokerVidereNavigering = getArguments().getBoolean(BLOKER_VIDERE_NAVIGERING);
    if (DRData.instans.programserieSlugFindesIkke.contains(udsendelse.programserieSlug)) {
      blokerVidereNavigering = true;
    }

    Log.d("onCreateView " + this);

    rod = inflater.inflate(R.layout.udsendelse_frag, container, false);
    final AQuery aq = new AQuery(rod);
    listView = aq.id(R.id.listView).adapter(adapter).getListView();
    listView.setEmptyView(aq.id(R.id.tom).typeface(App.skrift_gibson).getView());
    listView.setOnItemClickListener(this);
    listView.setContentDescription(
        udsendelse.titel
            + " - "
            + (udsendelse.startTid == null ? "" : DRJson.datoformat.format(udsendelse.startTid)));
    DRData.instans.hentedeUdsendelser.tjekOmHentet(udsendelse);
    hentStreams.run();

    setHasOptionsMenu(true);
    bygListe();

    afspiller.observatører.add(this);
    DRData.instans.hentedeUdsendelser.observatører.add(this);
    DRData.instans.favoritter.observatører.add(opdaterFavoritter);
    udvikling_checkDrSkrifter(rod, this + " rod");
    /*
    ListViewScrollObserver listViewScrollObserver = new ListViewScrollObserver(listView);
    listViewScrollObserver.setOnScrollUpAndDownListener(new ListViewScrollObserver.OnListViewScrollListener() {
      boolean actionBarSkjult = false;
      @Override
      public void onScrollUpDownChanged(int delta, int scrollPosition, boolean exact) {
        Log.d("scrollPosition="+scrollPosition + " delta="+delta);
        boolean nyActionBarSkjult = scrollPosition>0;
        if (actionBarSkjult == nyActionBarSkjult) return;
        actionBarSkjult = nyActionBarSkjult;
        if (actionBarSkjult) {
          ((Basisaktivitet) getActivity()).getSupportActionBar().hide();
        } else {
          ((Basisaktivitet) getActivity()).getSupportActionBar().show();
        }
      }

      @Override
      public void onScrollIdle() {

      }
    });
    listView.setOnScrollListener(new AbsListView.OnScrollListener() {
      boolean actionBarSkjult = false;
      @Override
      public void onScrollStateChanged(AbsListView view, int scrollState) {
        Log.d("onScrollStateChanged "+scrollState);
      }

      @Override
      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        Log.d("onScroll " + firstVisibleItem+ " " +visibleItemCount+ " " +totalItemCount);
        boolean nyActionBarSkjult = firstVisibleItem>0;
        if (actionBarSkjult == nyActionBarSkjult) return;
        actionBarSkjult = nyActionBarSkjult;
        if (actionBarSkjult) {
          ((Basisaktivitet) getActivity()).getSupportActionBar().hide();;
        } else {
          ((Basisaktivitet) getActivity()).getSupportActionBar().show();
        }
      }
    });
    */
    return rod;
  }