Okhelp.cz

Recepty, články, nápady, programování. Dříve dum-zahrada, finance, internet a know-how.okhelp.cz Pro lepší výsledky hledání používejte i diakritiku.

4. Fragments Tutorial ArticleFragment.java – Czech language



Dil 4. ArticleFragment.java
V 1. dílu jsme se něco dozvěděli od XML souborech a typu procesoru pro správný běh Android Studia a emulátoru různých typů zařizení s Androidem.
V 2. dílu jsme rozebrali MainActivity.java
V 3. dílu jsme se zabývali HeadlinesFragment.java


V tomto dílu se podíváme na ArticleFragment.java soubor.
Používáme příklad i zip porojekt z https://developer.android.com/training/basics/fragments/creating.html Pozorně si jej nastudujte.




package com.example.android.fragments;
// knihovna pro nižší verze Androidu
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
// extends Fragment - už nebude obsahovat funkci onCreate jako v Activity
// ale onCreateView
public class ArticleFragment extends Fragment {
    // důležité pro uložení argumentu - argumentů (hodnot)
	// pro obnovení předchozího stavu obsahu obrazovky
	// např. při rotaci zařízení atd.
	final static String ARG_POSITION = "position";
    int mCurrentPosition = -1;

TextView article; // uložen do globální proměnné, v originale
// odchycen v updateArticleView() ale tam vracel NULL

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

		// Když je activity znovu vytvořena (např. při rotaci zařízení),
		// obnoví, v našem případě, text článku, jehož pozice 
		// byla uložena pomocí
        // public void onSaveInstanceState(Bundle outState) viz níže
		// důležité zejména pro dual-panel (dva panely vedle sebe)
        if (savedInstanceState != null) {
            mCurrentPosition = savedInstanceState.getInt(ARG_POSITION);
        }

// umístíme, aktivujeme příslušný layout
// zde je zajímavé, že layout můžete měnit.
// Např. při kliknutí na pložku 1 v HeadlinesFragment
// zde můžete ochytit pozici a dle toho zvolit 
// příslušný layout, který chcete zobrazit ve fragmentu 
// ALE pak si musíte pohlídat ID prvků, které bude ten JINÝ
// layout obsahovat

// Oproti originalu odchytíme TextView již zde, v originalu to vyhazovalo chybu 
 View rootView = inflater.inflate(R.layout.vnitrek, container, false);
        article = (TextView) rootView.findViewById(R.id.article);		
        return rootView;
    }

    @Override
    public void onStart() {
        super.onStart();
// Při startu fragmentu, zkontrolujte, zda existují nějaké argumenty 
// předané do fragmentu.
// OnStart() je právě to správné místo, kde to udělat, 
// protože layout s jednotlivými elementy byl již         
// naloděn - aktivován, a můžeme bezpečně použít metody,         
// které potřebují, aby jednotlivá ID elementů layoutu byla již          
// aktivní, použitelná	a nevracela NULL, což by mělo za následek
// pád aplikace	
		
        Bundle args = getArguments();
        if (args != null) {
			// vypsaní obsahu článku pomocí předaného argumentu (pozice) z HeadlinesFragment.java
            updateArticleView(args.getInt(ARG_POSITION));
        } else if (mCurrentPosition != -1) {
			// vypsání článku dle pozice uložené např. při rotaci zařízení
			// mCurrentPosition je definována (odchycena) v onCreateView
            updateArticleView(mCurrentPosition);
        }
    }
/** 
funkce která vypíše obsah článku do TextView. 
Jako parametr int position je pozice položky, 
na kterou bylo kliknuto v ListView v HeadlinesFragment.java
*/
    public void updateArticleView(int position) {
		// na rozdíl od Activity se ve Fragment používá k 
		// získání id ne jen findViewById() 
		// ALE getActivity().findViewById() 
//Tento kod vracel article == NULL , PROTO bylo nutno odchytit TextView
// v onCreateView()
        //TextView article = (TextView) getActivity().findViewById(R.id.article);
        
// vložení textu článku do TextView z Ipsum.java
		// je to pole stringů, kde position je pozice stringu v poli
		// static String[] Articles = {"","",""};
      if (article != null)
                article.setText(Ipsum.Articles[position]);
		
        mCurrentPosition = position;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

		// Uložení pozice článku - elementu, či jiných argumentů důležitých
		// pro obnovení stavu v onCreateView() např. při rotaci zařízení
        outState.putInt(ARG_POSITION, mCurrentPosition);
// TIP: zde můžeme vždy při rotaci zařízení podstrčit náhodnou pozici
// článku pomocí
// randomNum = minimum + (int)(Math.random() * maximum);
// a vytvořit tak zábavnou hru, například pro náhodné
// vypsání přísloví, či nějakého fyzikálního zákona atd.
// Stačí pak aby uživatel jen pootočil zařízení od 90° a zpět,
// k vypsání nové položky
    }
}

397LW NO topic_id



Další témata ....(Topics)


390

Call requires permission which may be rejected by user | call-requires-permission-which-may-be-rejected-by-user


Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`




try {
// your code for example: 
//  LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);         
//  Criteria criteria = new Criteria();
//        provider = locationManager.getBestProvider(criteria, false);
//  locationManager.requestLocationUpdates(provider, 400, 1, this);
        } catch (SecurityException e) {
            e.printStackTrace();
        }


58

HorizontalScrollView ScrollView horizontal vertical Android xml example | horizontalscrollview-scrollview-horizontal-vertical-android-xml-example


HorizontalScrollView ScrollView LinearLayout horizontal vertical Android xml basic example and image.

[caption id="attachment_889" align="alignleft" width="200" caption="horizontal scrollview horizontalscrollview android"]horizontalscrollview-android[/caption]


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
	android:layout_width="fill_parent" android:layout_height="fill_parent"
	xmlns:android="//schemas.android.com/apk/res/android">

	// horizontal and vertical Scrollview
	<ScrollView android:id="@+id/ScrollView01"
		android:layout_height="135px" android:layout_width="wrap_content"
		android:scrollbars="horizontal|vertical">

		// HorizontalScrollview
		<HorizontalScrollView android:id="@+id/HorizontalScrollView01"
			android:layout_height="fill_parent" android:layout_width="wrap_content">

			<LinearLayout android:id="@+id/LinearLayout02"
				android:layout_width="wrap_content" android:orientation="vertical"
				android:layout_height="fill_parent">
				<LinearLayout android:orientation="horizontal"
					android:layout_width="fill_parent" android:layout_height="fill_parent"
					android:layout_weight="1">
					<TextView android:text="red" android:gravity="center_horizontal"
						android:background="#aa0000" android:layout_width="200px"
						android:layout_height="fill_parent" android:layout_weight="1" />
					<TextView android:text="green" android:gravity="center_horizontal"
						android:background="#00aa00" android:layout_width="200px"
						android:layout_height="fill_parent" android:layout_weight="1" />
					<TextView android:text="blue" android:gravity="center_horizontal"
						android:background="#0000aa" android:layout_width="200px"
						android:layout_height="fill_parent" android:layout_weight="1" />
					<TextView android:text="yellow" android:gravity="center_horizontal"
						android:background="#aaaa00" android:layout_width="200px"
						android:layout_height="fill_parent" android:layout_weight="1" />
				</LinearLayout>

				<LinearLayout android:orientation="vertical"
					android:layout_width="fill_parent" android:layout_height="fill_parent"
					android:layout_weight="1">
					<TextView android:text="row one" android:textSize="15pt"
						android:layout_width="fill_parent" android:layout_height="wrap_content"
						android:layout_weight="1" />
					<TextView android:text="row two" android:textSize="15pt"
						android:layout_width="fill_parent" android:layout_height="wrap_content"
						android:layout_weight="1" />
					<TextView android:text="row three" android:textSize="15pt"
						android:layout_width="fill_parent" android:layout_height="wrap_content"
						android:layout_weight="1" />
					<TextView android:text="row four" android:textSize="15pt"
						android:layout_width="fill_parent" android:layout_height="wrap_content"
						android:layout_weight="1" />
				</LinearLayout>


			</LinearLayout>
		</HorizontalScrollView>
	</ScrollView>
</LinearLayout>



Other sample


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/layout"
    android:orientation="vertical" >

    <HorizontalScrollView
        android:id="@+id/horizontalScrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="horizontal" >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Hello world! First TextView" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        </LinearLayout>



    </HorizontalScrollView>

</LinearLayout>

269

Eclipse revert old version Android Development Tools | eclipse-revert-old-version-android-development-tools


If you have trouble with compilation of new project after you make a update of android development tools you can go back to old version of the tools.




    • Open Help > About Eclipse... use the menu > About...

    • Click the "Installation Details" button.

    • Select the "Installation History" tab.

    • Select one of the previous configurations.

    • Click the "Revert" button at the bottom.





eclipse-revert-android-development-tools-1

eclipse-revert-android-development-tools-2


337

IllegalArgumentException Unknown Uri content SearchableDict | illegalargumentexception-unknown-uri-content-searchabledict


If you change the package name, you have to add new package name in:

DictionaryProvider.java


public class DictionaryProvider extends ContentProvider {
    String TAG = "DictionaryProvider";

//    public static String AUTHORITY = "com.example.android.searchabledict.DictionaryProvider";
// change to your new package name
public static String AUTHORITY = "com.myweb.mysubdomen.searchabledict.DictionaryProvider";
    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/dictionary");


// in AndroidManifest.xml
//change com.example.android to your package e.g. com.myweb.mysubdomen
<!-- Provides search suggestions for words and their definitions. -->
        <provider android:name="com.example.android.searchabledict.DictionaryProvider"
            android:configChanges="keyboard|keyboardHidden|orientation"
                  android:authorities="com.example.android.searchabledict.DictionaryProvider" />

        <!-- Points to searchable activity so the whole app can invoke search. -->
        <meta-data android:name="android.app.default_searchable"
            android:configChanges="keyboard|keyboardHidden|orientation"
                   android:value=".SearchableDictionary" />

// I change like this:
        <!-- Provides search suggestions for words and their definitions. -->
        <provider android:name=".DictionaryProvider"
            android:configChanges="keyboard|keyboardHidden|orientation"
                  android:authorities="cz.okhelp.android.searchabledict.DictionaryProvider" />

        <!-- Points to searchable activity so the whole app can invoke search. -->
        <meta-data android:name="android.app.default_searchable"
            android:configChanges="keyboard|keyboardHidden|orientation"
                   android:value=".SearchableDictionary" />


Do not forget change package name in all java class and xml/searchable.xml
In my project I changed like this:

<searchable xmlns:android="//schemas.android.com/apk/res/android"
        android:label="@string/search_label"
        android:hint="@string/search_hint"
        android:searchSettingsDescription="@string/settings_description"
        android:searchSuggestAuthority="cz.okhelp.android.searchabledict.DictionaryProvider"
        android:searchSuggestIntentAction="android.intent.action.VIEW"
        android:searchSuggestIntentData="content://cz.okhelp.android.searchabledict.DictionaryProvider/dictionary"
        android:searchSuggestSelection=" ?"
        android:searchSuggestThreshold="1"
        android:includeInGlobalSearch="true"
        >
 </searchable>


264

Font Family change on View dynamically Android Example | font-family-change-on-view-android-example


TypeFace, setTypeface, font, font family, array of String, Button create dynamically

@Override
protected void onStart() {
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
  48,
  55
);	
Typeface typeFace = Typeface.MONOSPACE;	
String [] ar = {"A","B","C","D","E","F","G","H","J","K"};
for (int i = 0; i < ar.length; i++) {
Button buttonView = new Button(this);
buttonView.setText(Html.fromHtml("<b>"+ar[i]+"</b>"));
buttonView.setTextColor(Color.BLUE);
buttonView.setTextSize(27.f);
buttonView.setTypeface(typeFace,Typeface.BOLD);
buttonView.setOnClickListener(mThisButtonListener);
if(i%2==0)
	mLayoutButtons.addView(buttonView, p);
else
	mLayoutButtonsNextRow.addView(buttonView, p);
	
_listOfButtons.add(buttonView);
}

	super.onStart();
}

//////// xml file
<TextView
    android:id="@+id/text01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20dp"
    android:fontFamily="Arial"
 />


Editace Jana Žákovská : 2016-07-07 11:16:55
Počet článků v kategorii: 397
Url:4-fragments-tutorial-articlefragment-java-czech-language
Share
Share
Tweet