Skocz do zawartości

Znajdź zawartość

Wyświetlanie wyników dla tagów 'fragment' .



Więcej opcji wyszukiwania

  • Wyszukaj za pomocą tagów

    Wpisz tagi, oddzielając je przecinkami.
  • Wyszukaj przy użyciu nazwy użytkownika

Typ zawartości


Forum

  • Społeczność android.com.pl
    • Regulaminy Forum
    • Przywitaj się!
    • Android.com.pl
    • Konkursy
    • OFF-Topic
  • Android
    • Nowości i plotki
    • FAQ Android
    • Android 9.0 Pie
    • Android 8.0 Oreo
    • Android 7.0 Nougat
    • Android 6.0 Marshmallow
    • Android 5.0 Lollipop
    • Android 4.4 KitKat
    • Archiwum Android
    • Software PC
  • Gry i Aplikacje
    • Aplikacje Android
    • Gry Android
    • Poszukiwania gier i aplikacji
    • Porównania gier i aplikacji
    • Android Wear - Smartwatch
    • Modyfikacje Wizualne
    • Download
    • Multimedia
  • Co i gdzie kupić?
    • Zakupy w Chinach
    • Co kupić
    • Operatorzy Sieci Komórkowej
    • Serwisy GSM
    • Sklepy
  • Programowanie
    • Tutoriale
    • Miejsce dla początkujących
    • Dyskusja ogólna/nowości
    • Kotlin
    • Design
    • Algorytmika
    • Framework
    • Środowisko programistyczne oraz języki programowania
    • Kariera
    • Praca oraz zlecenia dla programistów
  • Modyfikacje Android OS
    • Dział dla Developerów
    • Moduły XPOSED
    • Poradniki, modyfikacje Android OS
    • Pomoc Techniczna, Dyskusja Ogólna
    • Szukam modyfikacji
  • Elektronika
    • SmartWatch / SmartBand
    • Akcesoria
    • Telewizory
    • Komputery i laptopy
    • Systemy operacyjne
    • Radia samochodowe
    • Android w innych urządzeniach
    • Pozostała elektronika
  • Honor
    • Forum Honor
    • Honor 10
    • Honor 9
    • Honor 8
    • Honor 7
    • Pozostałe Honor
    • Archiwum Honor
  • Google
    • Forum Google
    • Huawei Nexus 6P
    • LG Nexus 5X
    • Motorola Nexus 6
    • LG Nexus 5
    • LG Nexus 4
    • Pozostałe Google
    • Archiwum Google
  • HTC
    • Forum HTC
    • HTC U11
    • HTC 10
    • HTC One (M9)
    • HTC One (M8)
    • HTC Desire 820
    • Pozostałe HTC
    • Archiwum HTC
  • LG
    • Forum LG
    • LG - Tablety
    • LG V30
    • LG G7
    • LG G6
    • LG G5 (H850)
    • LG V10 (H960)
    • LG G4 (H815, H818)
    • LG G3 (D855)
    • LG G2 (D802)
    • LG K10 (K420N, K430ds)
    • LG G3 S ( D722v, D722)
    • LG G2 Mini (D620)
    • LG Spirit 4G LTE (H440, H440y, H440n)
    • Pozostałe LG
    • Archiwum LG
  • Samsung
    • Forum Samsung
    • Samsung - Tablety
    • Samsung Galaxy S9+
    • Samsung Galaxy S9
    • Samsung Galaxy S8 + (SM-G955F)
    • Samsung Galaxy S8 (SM-G950F)
    • Samsung Galaxy S7 Edge (SM-G935F)
    • Samsung Galaxy S7 (SM-G930F)
    • Samsung Galaxy S6 Edge+ (SM-G928F)
    • Samsung Galaxy S6 Edge (SM-G925F)
    • Samsung Galaxy S6 (SM-G920F)
    • Samsung Galaxy S5 (SM-G900F)
    • Samsung Galaxy Note 9
    • Samsung Galaxy Note 8
    • Samsung Galaxy Note 5 (SM-N920)
    • Samsung Galaxy Note 4 (SM-N910)
    • Samsung Galaxy Note 3 (SM-N9005)
    • Samsung Galaxy S5 Mini (SM-G800F)
    • Samsung Galaxy S4 Mini (GT-I9190, I9192, I9195)
    • Samsung Galaxy A5 2017 (SM-A520F)
    • Samsung Galaxy A5 2016 (SM-A510)
    • Samsung Galaxy A3 2016 (SM-A310)
    • Samsung Galaxy A5 (SM-A500F/FU)
    • Samsung Galaxy A3 (SM-A300H/DS/HQ)
    • Samsung Galaxy J5 2016 (SM-J510F, SM-J510FN)
    • Samsung Galaxy J5 (SM-J500F, SM-J500FN)
    • Pozostałe Samsung
    • Archiwum Samsung
  • Sony
    • Forum Sony
    • Sony - Tablety
    • Sony Xperia XZ (F8331)
    • Sony Xperia Z5 (E6603, E6653)
    • Sony Xperia Z5 Compact (E5803, E5823)
    • Sony Xperia Z3 (D6603, D6643, D6616)
    • Sony Xperia Z3 Compact (D5803, D5833)
    • Sony Xperia Z2 (D6502, D6503, D6543)
    • Sony Xperia M5 (E5603)
    • Sony Xperia M2/M2 Dual (D2303, D2305, D2306) / (D2302)
    • Pozostałe Sony (SE)
    • Archiwum Sony
  • Motorola
    • Forum Motorola
    • Motorola Moto G5/G5+
    • Motorola Moto G4/G4+
    • Motorola Moto X Play
    • Moto X Style
    • Motorola Moto G 3rd (2015)
    • Motorola Moto G (2014)
    • Motorola Moto G
    • Pozostałe Motorola
    • Archiwum Motorola
  • Huawei
    • Forum Huawei
    • Huawei - Tablety
    • Huawei P20 Pro
    • Huawei P20
    • Huawei P10
    • Huawei P9
    • Huawei Mate 20 Pro
    • Huawei Mate 20 Lite
    • Huawei Mate 10 Pro
    • Huawei Mate 10 Lite
    • Huawei P9 Lite 2017
    • Huawei P10 lite
    • Huawei P9 Lite
    • Huawei P8 Lite
    • Huawei Mate 9
    • Pozostałe Huawei
    • Archiwum Huawei
  • Xiaomi / MIUI
    • Forum Xiaomi
    • Xiaomi Mi A1
    • Xiaomi Mi6
    • Xiaomi Mi5 (5s / 5s Plus)
    • Xiaomi Mi4 (Mi4 / Mi4i / Mi4c / Mi4s)
    • Redmi 4 (Pro/4A/X)
    • Xiaomi Redmi 3 (3 / 3 PRO / 3S)
    • Redmi Note 4 (MTK / X)
    • Redmi Note 3 (MTK / PRO / SE)
    • Pozostałe Xiaomi
    • Archiwum Xiaomi
  • OnePlus
    • Forum OnePlus
    • OnePlus 6T
    • OnePlus 6
    • OnePlus 5T - A5010
    • OnePlus 5
    • OnePlus 3T
    • OnePlus 3 - A3003
    • OnePlus One - A0001
    • Pozostałe modele - OnePlus
  • Lenovo
    • Lenovo - Tablety
    • Lenovo P2
    • Lenovo K6 Note
    • Lenovo K3/K3 Note
    • Lenovo K5/K5 Plus
    • Pozostałe Lenovo
    • Archiwum Lenovo
  • Asus
    • Forum Asus
    • ZenFone 5 (A501CG)
    • ZenFone 2 (Z00AD)
    • Asus Eee Pad Transformer TF300
    • Pozostałe Asus
    • Archiwum Asus
  • myPhone
    • MyPhone Luna
    • myPhone Next
    • myPhone FUN
    • myPhone Cube
    • Pozostałe myPhone
  • Pozostałe marki
    • Nokia
    • Alcatel
    • Oppo
    • GoClever
    • Overmax
    • Pentagram
    • Prestigio
    • Kazam
    • Kiano
    • Kruger & Matz
    • Lark
    • Manta
    • Meizu
    • ZTE
    • Inne
    • Archiwum pozostałe marki
    • Pozostałe tematy
  • Pozostałe Tablety Android OS
  • Tablety z Android OS
  • Archiwum Pozostałe Telefony z Android OS

Szukaj wyników w...

Znajdź wyniki, które...


Data utworzenia

  • Od tej daty

    Do tej daty


Ostatnia aktualizacja

  • Od tej daty

    Do tej daty


Filtruj po ilości...

Znaleziono 12 wyników

  1. Witam, Mam aplikację, w której zamiast aktywności wykorzystuję fragmenty. W jednym z nich potrzebuję dodać kilka playerów z youtuba. Dotychczas udało mi się dodać tylko jeden i wszystko działa dobrze. Problem pojawia się wtedy jak chcę dodać drugi i kolejny player. Na wszystkich playerach pojawia się ten sam filmik i wszystkie playery odtwarzają go jednocześnie. Ma ktoś pomysł jak to zrobić aby każdy player odtwarzał inne video z youtuba? Poniżej wklejam mój kod: xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:background="#31333a" android:layout_height="match_parent"> <FrameLayout android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:id="@+id/youtube_howtostart1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:visibility="visible" > </FrameLayout> </RelativeLayout> Java: public class HowToStart extends Fragment { private static final String API_KEY = PlayerConfig.API_KEY; private static String vidid = "ML0KJlKsNkY"; View myView; FrameLayout frameLayout; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { myView = inflater.inflate(R.layout.fragment_howtostart, container, false); frameLayout = myView.findViewById(R.id.youtube_howtostart1); final YouTubePlayerSupportFragment youTubePlayerFragment1 = YouTubePlayerSupportFragment.newInstance(); FragmentTransaction transaction1 = getChildFragmentManager().beginTransaction(); transaction1.add(R.id.youtube_howtostart1, youTubePlayerFragment1).commit(); youTubePlayerFragment1.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() { @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { if (!wasRestored) { player.cueVideo(vidid); player.pause(); player.setFullscreenControlFlags(0); player.setShowFullscreenButton(false); } } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult error) { // YouTube error String errorMessage = error.toString(); Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); Log.d("errorMessage:", errorMessage); } }); return myView; } }
  2. Od dłuższego czasu krążyły plotki o możliwym przejęciu HTC przez Google. Jeszcze wczoraj w zasadzie żegnaliśmy się z marką, jednak dzisiejsze informacje okazały się sporym zaskoczeniem. HTC na części Google nie kupiło ani całego HTC, ani choćby działu mobilnego. Zamiast tego wykupiono część pracowników zajmujących się pracami nad Pixelami. Oznacza to, że od tej pory […] HTC nie zniknie, Google wykupiło tylko fragment działu mobilnego Przeczytaj cały artykuł
  3. Otóż mam takie pytanie. Mam listę i z niej itema muszę pobrać 4 danę. To spoko ja na swoją wiedzę zrobił bym to tak jak niżej: public static String a; b... listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { a = list.get(i).getOwner().getAvatarUrl(); b... } }); I potem się do tych statycznych rzeczy odwołał w fragmencie, jednak nie do końca jestem pewien czy aby na pewno jest to dobry pomysł i tak można zrobić. Jak takie rzeczy powinno się robić?
  4. Rom jest stabilny, a w obecnej fazie jest przeznaczony dla zablokowanego jak i odblokowanego bootloadera, lecz nie działa ze wszystkimi kernelami. Wersja deodexed bazująca na stocku 23.5.A.1.291 Global Firmware (D6603). Dodatkowo zawiera SuperSU 2.76 i TWRP 3.0.2 oraz dodane wsparcie dla init.d. Screeny: Linki do pobrania: ROM 4.0 OTA 4.1 ANI AUTOR ANI JA NIE PONOSIMY ODPOWIEDZIALNOŚCI ZA EWENTUALNE USZKODZENIA TELEFONU, KARTY SD. KAŻDĄ MODYFIKACJĘ WGRYWASZ NA WŁASNĄ ODPOWIEDZIALNOŚĆ!!! Instalacja: - pobrane pliki kopiujemy na kartę sd - wchodzimy w recovery TWRP - nie robimy wipe, skrypt podczas instalacji sam to wykona Zalecana czysta instalacja - przywrócenie ustawień domyślnych przed i po flashowaniu - wrzucamy paczkę z romem, potem paczkę ota - jeśli chcemy korzystać z xposed, wrzucamy najnowszą ich wersję - wipe cache and dalvik - Reboot Dodatki: Dynamicznie zmieniający się kolor paska nawigacji: Dynamic Nav-Bar 36 dpi: Dynamic Nav-Bar 42 dpi Dynamic Nav-Bar 48 dpi Statyczny kolor paska animacji (przypisany na sztywno do danego motywu): 48 dpi Nav-Bar 42 dpi Nav-Bar 36 dpi Nav-Bar Autorem moda romu jest użytkownik Dobsgw Link do xda
  5. W MainActivity mam coś takiego: DescActivity.java wygenerowany jest przez Android Studio, czyli: W activity_desc.xml mam: desc_row.xml to plik zawierający kilka TextView i Button. Jak przekazać ID z MainActivity do fragmentu "DescFragment" dodanego w activity_desc.xml do DescActivity?
  6. Witam W mojej aplikacji opartej na fragmentach dodałem toolbar i mam problem z wyswietlaniem podgladu kamery, aby to zobrazować zamieszczam screeny. Probowałem użyć setSupportedActionBar().hide(); po wejsciu w aparat, a nastepnie show(): jednak ta metoda wywala mi błąd void android.app.ActionBar.show()' on a null object reference jesli juz wychodze z kamery i chce pokazac toolbar (jeżeli nie używam metody show(), to toolbar sie chowa, jednak nadal nie widać całego podgladu kamery i jest on uciety od dołu tak jak na obrazku drugim tyle, że bez toolbara już). Jakies propozycje ?
  7. Witam wszystkich, otóż mam taki problem, że przy przesuwaniu palcem viewpager czasami dzieję się coś takiego jakby widok się zawiesił (na obrazku ten kawałek po lewej stronie). Tzn przesuwasz ale ciągle w jednym miejscu jest ucięta grafika z fragmentu, która dziwnie wygląda i nie powinno jej tam być. Dzieję się to nie na wszystkich telefonach a wręcz zauważyłem że raczej na tych słabszych. Dziwna sprawa nie miałem z tym nigdy do czynienia. Ktoś wie jak takie coś rozwiązać? Pozdrawiam.
  8. Zaimpelemntowałem interfejs umożliwiający przełączanie się między kartami według tego poradnika: http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html. To co jest na screen'ie to główna aktywność posiadająca dwie karty (czyli Tab1.xml i Tab2.xml). Klasy Tab1 oraz Tab2 są rozszerzeniem klasy Fragment. Załózmy że chcę zmienić tekst w Tab1, ten "You Are in Tab 1". Mogę to zrobić bez problemu przy wykorzystaniu funkcji onCreateView(). Jak rozumiem funkcja ta jest uruchamiana tylko raz przy tworzeniu widoku, a więc w ten sposób tekst ten mogę zmienić tylko raz na początku. Chcę zmienić tekst w "późniejszym" czasie, np. na skutek działania funkcji wewnątrz MainActivity albo z dowolnego innego miejsca. W tym celu utworzyłem sobie statyczną zmienną TextView która wskazuje na dany tekst. public class Tab1 extends Fragment { public static TextView textView; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.tab_1,container,false); textView = (TextView) view.findViewById(R.id.textView); textView.setText("Ta funkcja działa, a więc textView nie może być null"); return view; } Problem pojawia się gdy chcę się odnieść do zmiennej Tab1.textView z poziomu innej klasy, przykładowo z MainActivity: public class MainActivity extends AppCompatActivity { Toolbar toolbar; ViewPager pager; ViewPagerAdapter adapter; SlidingTabLayout tabs; CharSequence Titles[]={"Home","Events"}; int Numboftabs =2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); InitializeToolbarAndTabs(); Tab1.textView.setText("To już niestety nie działa"); } W tym momencie otrzymuję nieobsługiwany wyjątek: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference Próbowałem już kilka innych sposobów, zawsze otrzymuję NullPointerException. Nie mogę również znaleźć fragmentu funkcjami findFragmentByTag() ani findFragmentById() - też zawsze null. Nawet List<android.support.v4.app.Fragment> allFragments = getSupportFragmentManager().getFragments(); zwraca pustą listę allFragments. Wszystkie te funkcje wywoływane są wewnątrz MainActivity.
  9. Witam ponownie. Podczas pracy nad aplikacją trafiłem na ostatnią trudną rzecz, która okazała się nie do przeszkoczenia. Otóż, posiadam 2 aktywności (o nazwach FA, SA). W aktywności SA posiadam na razie 1 fragment o nazwie FF. W FA obliczam dane (wartości double), które wysyłam do SA za pomocą Intent (putExtra, getExtra). Działa to w porządku, ale teraz chciałbym pobrać dane z tego SA do fragmentu FF. Niestety nie wiem jak. Dodam tylko, że fragmentu nie mam zdefiniowanego w pliku XML. Jako, że chce poźniej zrobić tam następne fragmenty, które będą korzystały z tych samych danych, dlatego dane pierw wysyłam do aktywności SA. Czy to jest dobra praktyka? W sumie nie wiem czy jest alternatywa do tego.
  10. Witam. Mam problem z ustawieniem TabHosta, mimo skonfigurowania, wygląda tak jakby nie był skonfigurowany.(screenshot w załączniku) Ten sam kod wklejony do innego projektu działa poprawnie, jednak tutaj nie. Domyślam się że to przez NavDrawera, bo już mi przysporzył kłopotu w odnajdywaniu obiektu TabHost po id: Chciałbym aby w danym fragmencie NavDrawera wyświetlił się TabHost. import android.app.Fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TabHost; public class PlanLekcji extends Fragment { public PlanLekcji(){} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); View rootView = inflater.inflate(R.layout.plan_lekcji, container, false); String[] Poniedzialek = new String[] {"PLSKIA", "PLSKIA", "PLSKIA", "UTK", "WF", "WF", "UTK", "Aplikacje Internetowe"}; String[] Wtorek = new String[] {"Matematyka", "Fizyka", "UTK", "WF", "Język Niemiecki", "Sieci Komputerowe", "MIEKOOUP", "MIEKOOUP"}; String[] Środa = new String[] {"Matematyka", "Język Polski", "Język Polski", "Systemy Operacyjne", "Sieci Komputerowe", "Język Angielski", "Programowanie", "TAIiBD"}; String[] Czwartek = new String[] {"Matematyka", "Godzina Wychowawcza", "Matematyka", "Język Angielski", "Religia", "Fizyka", "TaIiBD", ""}; String[] Piatek = new String[] {"MIEKOOUP", "MIEKOOUP", "Programowanie", "Język Polski", "HiS", "Podstawy Przedsiębiorczości", "Religia", "WDŻ"}; View myFragmentView = inflater.inflate(R.layout.plan_lekcji, container, false); TabHost tabhost = (TabHost) myFragmentView.findViewById(R.id.tabHost); if (tabhost!=null) Log.d("SYSTEM", "znaleziono tabHosta"); else Log.d("SYSTEM", "nie znaleziono tabHosta"); tabhost.setup(); //PONIEDZIALEK TabHost.TabSpec ponspecs = tabhost.newTabSpec("pon"); ponspecs.setContent(R.id.txtpon); ponspecs.setIndicator("Poniedziałek"); tabhost.addTab(ponspecs); //WTOREK TabHost.TabSpec wtspecs = tabhost.newTabSpec("wt"); wtspecs.setContent(R.id.txtwt); wtspecs.setIndicator("Wtorek"); tabhost.addTab(wtspecs); //SRODA TabHost.TabSpec srspecs = tabhost.newTabSpec("sr"); srspecs.setContent(R.id.txtsr); srspecs.setIndicator("Środa"); tabhost.addTab(srspecs); //CZWARTEK TabHost.TabSpec czwspecs = th.newTabSpec("tag4"); czwspecs.setContent(R.id.czw); czwspecs.setIndicator("Czwartek"); th.addTab(czwspecs); //PIATEK TabHost.TabSpec ptspecs = th.newTabSpec("tag5"); ptspecs.setContent(R.id.pt); ptspecs.setIndicator("Piątek"); th.addTab(ptspecs); * Log.d("KOMUNIKAT SYSTEMOWY", "Zakonczono ladowanie TabHost"); return rootView; } } plan_lekcji.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TabHost android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/tabHost" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_marginTop="130px" android:layout_height="wrap_content"></TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!--PONIEDZIALEK--> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Poniedziałek" android:id="@+id/txtpon" android:layout_gravity="center_vertical" /> <!--WTOREK--> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Wtorek" android:id="@+id/txtwt" android:layout_gravity="center_vertical" /> <!--SRODA--> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Środa" android:id="@+id/txtsr" android:layout_gravity="center_vertical" /> <!--CZWARTEK--> <LinearLayout android:id="@+id/czw" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Czwartek" android:id="@+id/textViewCzw" android:layout_gravity="center_vertical" /> </LinearLayout> <!--PIATEK--> <LinearLayout android:id="@+id/pt" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="piątek" android:id="@+id/textViewPt" android:layout_gravity="center_vertical" /> </LinearLayout> --> </FrameLayout> </LinearLayout> </TabHost> </RelativeLayout> MainActivity.java: package info.androidhive.slidingmenu; import android.annotation.TargetApi; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.content.res.Configuration; import android.content.res.TypedArray; import android.os.Build; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import java.util.ArrayList; import info.androidhive.slidingmenu.adapter.NavDrawerListAdapter; import info.androidhive.slidingmenu.model.NavDrawerItem; public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mDrawerTitle; private CharSequence mTitle; private String[] navMenuTitles; private TypedArray navMenuIcons; private ArrayList<NavDrawerItem> navDrawerItems; private NavDrawerListAdapter adapter; @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTitle = mDrawerTitle = getTitle(); navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); navMenuIcons = getResources() .obtainTypedArray(R.array.nav_drawer_icons); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.list_slidermenu); navDrawerItems = new ArrayList<NavDrawerItem>(); navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "4")); navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "1")); navMenuIcons.recycle(); mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems); mDrawerList.setAdapter(adapter); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name ) { public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { displayView(0); } } /* * * *Slider menu * */ private class SlideMenuClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { displayView(position); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case R.id.action_settings: return true; default: return super.onOptionsItemSelected(item); } } @Override public boolean onPrepareOptionsMenu(Menu menu) { // if nav drawer is opened, hide the action items boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.action_settings).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } private void displayView(int position) { Fragment fragment = null; switch (position) { case 0: fragment = new PlanLekcji(); break; case 1: fragment = new Oceny(); break; case 2: fragment = new ZadaniaDomowe(); break; case 3: fragment = new Sprawdziany(); break; case 4: fragment = new Informacje(); break; case 5: fragment = new Oplaty(); break; default: break; } if (fragment != null) { FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.frame_container, fragment).commit(); mDrawerList.setItemChecked(position, true); mDrawerList.setSelection(position); setTitle(navMenuTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } else { Log.e("MainActivity", "Error in creating fragment"); } } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } } Przy okazji, chciałbym się dowiedzieć, czy jest jakiś sposób na sprawdzenie czy pojedyncza instrukcja została pomyślnie wykonana? Byłbym bardzo wdzięczny gdyby ktoś mi podpowiedział co zrobić aby aplikacja zadziałała prawidłowo.
  11. Jestem w trakcie pisania aktualizacji do mojej aplikacji. Z założenia plan jest prosty, aplikacja ma się składać z trzech zakładek Strona Główna, Najwyzej oceniane, Ostatnio dodane. Te dwie ostatnie zakładki pobieraja w AsyncTask za pomoca JSON dane z bazydanych i wrzucaja je do ListView. Zaraz po uruchomieniu aplikacji wszystko jest spoko, ale gdy pobierzemy pare danych, choreographer wyrzuca cały czas komunikat: the application may be doing too much work on its main thread. Pierwsza classa w ktorej tworze Fragmenty itd. StronaGlowna.class NajwyzejOceniane.class EndlessScrollListener.class TopListZapytania.class EndlessScrollListener uruchamia classe z zapytaniem gdy przesuniemy liste do konca, TopListZapytania doczytuje kolejne dane w AsyncTask i nie wiem czymu aplikacja się czepia że głowny wątek ma za dużo roboty.. :/ Po pojawieniu się tego komunikatu znikają mi wszystkie views z Strona Głowna i Ostatnio dodane. Dlaczego znikaja akurat z tych dwóch już doszedłem do tego. Spowodowane to jest tym ze gdy glowny watek juz ma za duzo roboty to nie wykonuje onCreateView dla StronaGlowna i Ostatnio dodane, dlatego pozostaja one puste..:/ Macie moze jakies pomysly jak rozwiazac ten problem? Tak powinna wygladac aplikacja caly czas: A tak wyglada po przesunieciu którejś z list w dół: Instalka do aplikacji, jeśli ktoś chciałby zobaczyć jak to wygląda w praktyce: MojePrzepisyV2.apk
  12. Mam następujący problem. Mam Activity, które posiada swoje ActionBar. W metodzie onCreate wypełniam programistycznie actionbara w ten sposób: protected void onCreate(Bundle savedInstanceState) { //...some other things ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setDisplayShowTitleEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); Tab tab = bar.newTab().setText(R.string.tab_sites).setTabListener( new TabListener<CategoriesFragment>(activity,"tag1",CategoriesFragment.class)); bar.addTab(tab); tab = bar.newTab().setText(R.string.tab_offline).setTabListener( new TabListener<OfflineFragment>(activity,"tag2", OfflineFragment.class)); bar.addTab(tab); } CategoriesFragment to ListFragment, nie posiada żadnego xml’a związanego z layoutem. OfflineFragment to Fragment, który buduje swój widok na podstawie xml’a z layoutem (tzn, inflater.inflate(...)) TabListener, z którego korzystam, wygląda tak: public class TabListener<T extends Fragment> implements android.app.ActionBar.TabListener { public MyFragmentListener(Activity activity, String tag, Class<T> tClass) { this(activity, tag, tClass, null); } public MyFragmentListener(Activity activity, String tag, Class<T> tClass, Bundle bundle) { this.activity = activity; this.tag = tag; this.tClass = tClass; this.bundle = bundle; fragment = activity.getFragmentManager().findFragmentByTag(tag); if(fragment != null && !fragment.isDetached()){ FragmentTransaction fragmentTransaction = activity.getFragmentManager().beginTransaction(); fragmentTransaction.detach(fragment); fragmentTransaction.commit(); } } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { if(fragment == null){ fragment = Fragment.instantiate(activity, tClass.getName(),bundle); ft.add(android.R.id.content,fragment, tag); } else{ ft.attach(fragment); } } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { if(fragment != null){ ft.detach(fragment); } } } Próbuję to odpalić i przetestować. Kiedy Activity startuje, widzę obie taby, które wyglądają tak jak ja chcę: Tutaj jest pierwszy tab: pierwszy tab Tutaj jest drugi tab: drugi tab Kiedy chcę wybrać fragment z listy na pierwszym tabie, chcę zpushować nowy ListFragment w taki oto sposób: public void onListItemClick(ListView l, View v, int position, long id) { Bundle bundle = new Bundle(); bundle.putString("chosen", category[position]); Fragment fragment = new SubcategoryFragment(); fragment.setArguments(bundle); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); fragmentTransaction.replace(getId(), fragment); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); fragmentTransaction.addToBackStack("category_to_subcategory"); fragmentTransaction.commit(); } Po wybraniu jakiegoś elementu, taby wyglądają tak: Pierwszy tab: pierwszy tab , czyli tak jak ja chcę, wszystko ok Drugi tab: drugi tab , no i widać problem - z jakiegoś powodu ta lista z pierwszego taba ‘pojawiła się’ w drugim tabie. Jeżeli próbuję wcisnąć ‘powrót’ w pierwszym tabie po pojawieniu się nowej listy, powraca do poprzedniej, czyli tak jak ja chcę. Jeżeli po wybraniu jakiegoś elementu z listy, pojawieniu się nowego listfragmentu, przejdę do drugiego taba, i tam wcisnę powrót, lista z pierwszego taba kompletnie znika: imgur: the simple image sharer Jeżeli po wybraniu jakiegoś elementu z listy, pojawieniu się nowego listfragmentu, przejdę do drugiego taba, przejdę z powrotem do 1go taba, i tam wcisnę powrót, program się wysypuje, a powodem jest: 06-15 20:11:12.151: E/AndroidRuntime(18971): java.lang.IllegalStateException: Fragment already added: CategoriesFragment{414d9350 #0 id=0x1020002 fanfictionnet_categories} Jak widać, coś robię źle. Co dokładniej?