Cara Membuat Fragmen Di Apk Android | Tutorial
Di aplikasi Anda, mungkin ada layar tertentu yang hanya sebagian informasi yang perlu diperbarui pada acara tertentu. Atau, untuk memberikan pengalaman pengguna yang baik, Anda mungkin ingin menampilkan informasi tambahan pada perangkat layar besar sedangkan informasi yang sama ditampilkan di beberapa layar pada perangkat layar kecil.
Android menyediakan Fragmen untuk menangani skenario ini. Fragmen adalah modul layar dan aktivitas yang dapat digunakan kembali. Fragment memiliki metode panggilan baliknya sendiri, mendefinisikan tata letak UI sendiri dan menangani acara UI.
Di Android, setiap layar aplikasi dikaitkan dengan suatu aktivitas. Fragmen mewakili bagian dari UI. Kegiatan mengandung Fragmen untuk menyediakan UI lengkap.
Metode siklus hidup fragmen
Seperti aktivitas yang dibuat dengan memperluas kelas Aktivitas, fragmen dibuat dengan memperluas kelas Fragmen dan subclassnya DialogFragment, ListFragment dan PreferenceFragment dll. Serupa dengan metode panggilan balik aktivitas, fragmen juga memanggil metode kembali.
Metode panggilan balik penting ada diAttach, Oncreate, dan onCreateView. Panggilan sistem onAttach metode ketika fragmen telah dilampirkan ke aktivitas. Metode Oncreate disebut ketika fragmen dibuat. Method onCreateView dipanggil untuk mendapatkan UI dan mengembalikan tampilan.
Langkah-langkah untuk Menerapkan Fragmen
- Buat kelas fragmen yang merupakan subkelas Fragmen
- Menerapkan metode panggilan balik dan metode penanganan input yang diperlukan
- Tentukan tata letak UI untuk fragmen dalam xml
- Implementasikan metode onCreateView () memanggil kembali kelas fragmen untuk menyediakan antarmuka pengguna fragmen yang didefinisikan dalam xml
- Tambahkan fragmen ke aktivitas, Anda dapat menambahkan fragmen dalam tata letak aktivitas file xml atau waktu proses menggunakan pengelola transaksi fragmen
Contoh fragmen
Contoh kode aplikasi ditunjukkan di bawah ini. Ini memiliki tiga layar. Layar utama menampilkan daftar toko. Saat mengklik sebuah toko, pengguna membutuhkan layar kupon. Layar kupon terdiri dari dua fragmen. Satu fragmen mencantumkan semua kupon untuk toko yang dipilih. Fragmen kedua menunjukkan rincian kupon dari kupon yang dipilih dari fragmen pertama.
Antarmuka pengguna tidak didefinisikan dalam file xml untuk kedua fragmen (daftar dan fragmen detail) karena fragmen pertama adalah ListFragment dan tata letak diatur menggunakan metode setListAdapter. Array data dilewatkan ke metode setListAdapter untuk menampilkan daftar item.
Pada mengklik item dalam daftar fragmen, daftar onListItemClick metode fragment dipanggil. Metode ini melewati indeks untuk merinci fragmen dan mengganti fragmen detail untuk menampilkan detail dari item yang dipilih dalam fragmen detail.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zoftino.fragments">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".CouponsActivity">
</activity>
</application>
</manifest>
MainActivity.java
package com.zoftino.fragments;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<string> storesAdapter =
new ArrayAdapter<string>(this, android.R.layout.simple_list_item_1, CouponsData.arrayOfStores);
ListView listView = (ListView) findViewById(R.id.lv_stores);
listView.setAdapter(storesAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long id) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, CouponsActivity.class);
intent.putExtra("ID", id);
startActivity(intent);
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.zoftino.fragments.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="List of Stores"
android:id="@+id/lb_stores" ></TextView>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/lb_stores"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="40dp"
android:layout_marginEnd="20dp"
android:layout_marginTop="40dp">
<ListView
android:id="@+id/lv_stores"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</LinearLayout>
</RelativeLayout>
CoupsonActivity.java
package com.zoftino.fragments;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class CouponsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.coupons_view);
}
}
coupons_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment class="com.zoftino.fragments.CouponsListFragment"
android:id="@+id/couponsLst" android:layout_weight="1" android:layout_width="0dp"
android:layout_height="match_parent"></fragment>
<FrameLayout android:id="@+id/cpnDetails" android:layout_weight="1"
android:layout_width="0dp" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground"></FrameLayout>
</LinearLayout>
Daftar fragmen java
package com.zoftino.fragments;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class CouponsListFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<string>(getActivity(),
android.R.layout.simple_list_item_activated_1, CouponsData.arrayOfCoupons));
getCouponDetails(0);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
getCouponDetails(position);
}
public void getCouponDetails(int index){
CouponDetailsFragment cpnDetails = CouponDetailsFragment.newInstance(index);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.cpnDetails, cpnDetails);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
}
Rincian fragmen java
package com.zoftino.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ScrollView;
import android.widget.TextView;
public class CouponDetailsFragment extends Fragment {
public static CouponDetailsFragment newInstance(int cpnIndex) {
CouponDetailsFragment cdf = new CouponDetailsFragment();
Bundle args = new Bundle();
args.putInt("cpnIndex", cpnIndex);
cdf.setArguments(args);
return cdf;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ScrollView scroller = new ScrollView(getActivity());
TextView text = new TextView(getActivity());
if(getArguments() != null) {
text.setText(CouponsData.arrayOfCouponDetails.get(getArguments().getInt("cpnIndex", 0)));
}else{
text.setText(CouponsData.arrayOfCouponDetails.get(0));
}
scroller.addView(text);
return scroller;
}
}
0 Response to "Cara Membuat Fragmen Di Apk Android | Tutorial"
Post a Comment