In the layout of our fragment, we have 4 ImageView.
- image_a: With android:src defined in XML.
 - image_b: Load image in onCreateView().
 - image_c: Load image in onCreateView(), only if savedInstanceState == null.
 - image_d: Load image in runtime, triggered by button clicked
 
Code List -
Modify our custom FragmentActivity (MyFragmentActivity.java) and Fragment (MyFragment.java.java) to display savedInstanceState also.
MyFragmentActivity.java
package com.example.androidfragmenttest;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.Toast;
public class MyFragmentActivity extends FragmentActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  recLifeCycle_with_savedInstanceState(savedInstanceState);
  super.onCreate(savedInstanceState);
 }
 
 @Override
 protected void onStart() {
  recLifeCycle();
  super.onStart();
 }
 @Override
 protected void onRestart() {
  recLifeCycle();
  super.onRestart();
 }
 @Override
 protected void onResume() {
  recLifeCycle();
  super.onResume();
 }
 @Override
 protected void onPause() {
  recLifeCycle();
  super.onPause();
 }
 
 @Override
 protected void onStop() {
  recLifeCycle();
  super.onStop();
 }
 @Override
 protected void onDestroy() {
  recLifeCycle();
  super.onDestroy();
 }
 public void recLifeCycle(){
  
  String className = getClass().getSimpleName();
  StackTraceElement[] s = Thread.currentThread().getStackTrace();
  String methodName = s[3].getMethodName();
  
  Toast.makeText(getApplicationContext(), 
    className + "." + methodName, Toast.LENGTH_SHORT).show();
  Log.i("MYTAG", className + "." + methodName);
  
 }
 
 public void recLifeCycle(String note){
  String className = getClass().getSimpleName();
  StackTraceElement[] s = Thread.currentThread().getStackTrace();
  String methodName = s[3].getMethodName();
  Toast.makeText(getApplicationContext(), 
    className + "." + methodName, Toast.LENGTH_SHORT).show();
  Log.i("MYTAG", className + "." + methodName + " / " + note);
 }
 
 public void recLifeCycle_with_savedInstanceState(Bundle state){
  
  String stateMsg;
  if(state == null){
   stateMsg = "savedInstanceState == null";
  }else{
   stateMsg = "savedInstanceState != null";
  }
  
  String className = getClass().getSimpleName();
  StackTraceElement[] s = Thread.currentThread().getStackTrace();
  String methodName = s[3].getMethodName();
  
  Toast.makeText(getApplicationContext(), 
    className + "." + methodName, Toast.LENGTH_SHORT).show();
  Log.i("MYTAG", className + "." + methodName + " / " + stateMsg);
 }
}
MyFragment.java
package com.example.androidfragmenttest;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class MyFragment extends Fragment {
 @Override
 public void onAttach(Activity activity) {
  recLifeCycle();
  super.onAttach(activity);
 }
 @Override
 public void onCreate(Bundle savedInstanceState) {
  recLifeCycle_with_savedInstanceState(savedInstanceState);
  super.onCreate(savedInstanceState);
 }
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
  
  recLifeCycle_with_savedInstanceState(savedInstanceState);
  return super.onCreateView(inflater, container, savedInstanceState);
 }
 
 @Override
 public void onActivityCreated(Bundle savedInstanceState) {
  recLifeCycle_with_savedInstanceState(savedInstanceState);
  super.onActivityCreated(savedInstanceState);
 }
 @Override
 public void onStart() {
  recLifeCycle();
  super.onStart();
 }
 @Override
 public void onResume() {
  recLifeCycle();
  super.onResume();
 }
 @Override
 public void onPause() {
  recLifeCycle();
  super.onPause();
 }
 @Override
 public void onStop() {
  recLifeCycle();
  super.onStop();
 }
 @Override
 public void onDestroyView() {
  recLifeCycle();
  super.onDestroyView();
 }
 @Override
 public void onDestroy() {
  recLifeCycle();
  super.onDestroy();
 }
 @Override
 public void onDetach() {
  recLifeCycle();
  super.onDetach();
 }
 
 public void recLifeCycle(){
  
  String className = getClass().getSimpleName();
  StackTraceElement[] s = Thread.currentThread().getStackTrace();
  String methodName = s[3].getMethodName();
  
  String msg = className + "." + methodName;
  
  Toast.makeText(getActivity(), 
    msg, Toast.LENGTH_SHORT).show();
  Log.i("MYTAG", msg);
 }
 
 public void recLifeCycle(String note){
  
  String className = getClass().getSimpleName();
  StackTraceElement[] s = Thread.currentThread().getStackTrace();
  String methodName = s[3].getMethodName();
  
  String msg = className + "." + methodName;
  Toast.makeText(getActivity(), 
    msg, Toast.LENGTH_SHORT).show();
  Log.i("MYTAG", msg + " / " + note);
 }
 
 public void recLifeCycle_with_savedInstanceState(Bundle state){
  
  String stateMsg;
  if(state == null){
   stateMsg = "savedInstanceState == null";
  }else{
   stateMsg = "savedInstanceState != null";
  }
  
  String className = getClass().getSimpleName();
  StackTraceElement[] s = Thread.currentThread().getStackTrace();
  String methodName = s[3].getMethodName();
  
  String msg = className + "." + methodName + " / " + stateMsg;
  
  Toast.makeText(getActivity(), 
    msg, Toast.LENGTH_SHORT).show();
  Log.i("MYTAG", msg);
 }
 
}
The fragment layout, /res/layout/fragment_layout1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Fragment 1"/>
    
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            
            <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="image_a"/>
                <ImageView
                    android:id="@+id/image_a"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher"/>
            </LinearLayout>
            <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="image_b"/>
                <ImageView
                    android:id="@+id/image_b"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
            </LinearLayout>
            <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="image_c"/>
                <ImageView
                    android:id="@+id/image_c"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
            </LinearLayout>
            <TextView 
                android:id="@+id/textstate"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
            <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="image_d"/>
                <ImageView
                    android:id="@+id/image_d"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <Button
                    android:id="@+id/loadimage_d"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Load image_d"/>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
    
</LinearLayout>
MainActivity.java
package com.example.androidfragmenttest;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends MyFragmentActivity {
 static public class MyFragment1 extends MyFragment {
  
  ImageView image_b, image_c, image_d;
  TextView textState;
  Button buttonLoadImage_d;
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
   super.onCreateView(inflater, container, savedInstanceState);
   View view = inflater.inflate(R.layout.fragment_layout1, null);
   
   image_b = (ImageView)view.findViewById(R.id.image_b);
   image_c = (ImageView)view.findViewById(R.id.image_c);
   image_d = (ImageView)view.findViewById(R.id.image_d);
   textState = (TextView)view.findViewById(R.id.textstate);
   buttonLoadImage_d = (Button)view.findViewById(R.id.loadimage_d);
   
   image_b.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
   
   if(savedInstanceState == null){
    image_c.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
    textState.setText("MyFragment1.savedInstanceState == null");
   }else{
    textState.setText("MyFragment1.savedInstanceState != null");
   }
   
   buttonLoadImage_d.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View arg0) {
     image_d.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
    }});
   
   return view;
  }
 }
 FrameLayout fragmentContainer;
 Button buttonFinish;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  buttonFinish = (Button)findViewById(R.id.finish);
  buttonFinish.setOnClickListener(new OnClickListener(){
   @Override
   public void onClick(View arg0) {
    finish();
   }});
  fragmentContainer = (FrameLayout) findViewById(R.id.container);
  if (savedInstanceState == null) {
   // if's the first time created
   
   MyFragment1 myListFragment1 = new MyFragment1();
   FragmentManager supportFragmentManager = getSupportFragmentManager();
   FragmentTransaction fragmentTransaction = supportFragmentManager
     .beginTransaction();
   fragmentTransaction.add(R.id.container, myListFragment1);
   fragmentTransaction.commit(); 
  }
 }
}
Main layout, /res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    <Button
        android:id="@+id/finish"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="finish()"/>
    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>
</LinearLayout>


No comments:
Post a Comment