Headertab

Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Wednesday 27 March 2019

Jetpack navigation in android


Navigate fragment to fragment


Navigation.xml

 <?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/navigation_graph"
    app:startDestination="@id/firstFragment">

    <fragment
        android:id="@+id/firstFragment"
        android:name="com.journaldev.androidjetpacknavigation.FirstFragment"
        android:label="navigation_first_fragment"
        tools:layout="@layout/navigation_first_fragment" >
        <action
            android:id="@+id/action_firstFragment_to_secondFragment"
            app:destination="@id/secondFragment"
            app:enterAnim="@anim/nav_default_enter_anim"  />
    </fragment>
    <fragment
        android:id="@+id/secondFragment"
        android:name="com.journaldev.androidjetpacknavigation.SecondFragment"
        android:label="navigation_second_fragment"
        tools:layout="@layout/navigation_second_fragment" />

</navigation>





Alternate: 1

        View.OnClickListener s = Navigation.createNavigateOnClickListener(R.id.action_firstFragment_to_secondFragment);
        Button button = view.findViewById(R.id.button_frag1);

        button.setOnClickListener(s);



Alternate: 2

final NavController navController = Navigation.findNavController(getActivity(), R.id.my_nav_host_fragment);

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                navController.navigate(R.id.action_firstFragment_to_secondFragment);
            }
        });


Alternate: 3

final NavDirections navDirections = FirstFragmentDirections.actionFirstFragmentToSecondFragment();
final NavController navController = Navigation.findNavController(getActivity(), R.id.my_nav_host_fragment);

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                navController.navigate(navDirections);
            }

        });



***  Now see how to pass the argument from FirstFragment to SecondFragment


Navigation.xml

<fragment
        android:id="@+id/firstFragment"
        android:name="com.journaldev.androidjetpacknavigation.FirstFragment"
        android:label="navigation_first_fragment"
        tools:layout="@layout/navigation_first_fragment" >

        <argument
            android:name="test_string"
            android:defaultValue="hello world"
            app:argType="string" />

    </fragment>



MainActivity.java


       final Bundle bundle = new Bundle();
        bundle.putBoolean("test_boolean", true);

        final NavController navController = Navigation.findNavController(getActivity(), R.id.my_nav_host_fragment);

        
        Button button = view.findViewById(R.id.button_frag1);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                navController.navigate(R.id.action_firstFragment_to_secondFragment, bundle);
            }
        });











































































Sunday 24 March 2019

Dagger Sample in android


What is Dagger Dependency?


Dagger is a fully static, compile-time dependency injection framework for both Java and Android. It is an adaptation of an earlier version created by Square and now maintained by Google.

If you are dagger dependency beginner please follow and understand very carefully. First, you add the dependency in your android studio gradle.

 var dagger = '2.15'

implementation "com.google.dagger:dagger:$rootProject.dagger"implementation "com.google.dagger:dagger-android:$rootProject.dagger"implementation "com.google.dagger:dagger-android-support:$rootProject.dagger"annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger"annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.dagger"


Now you create a simple HelloData class and make one method name by sayHello().


public class HelloData {

    public String sayHello() {
        return "Hello android This is my first dagger app";
    }
}



Now you create module name by AppModule

@Module
public class AppModule {

   
@ProvidesContext provideContext(App application) {
    return application.getApplicationContext();
}

@Singleton@ProvidesHelloData helloData() {
    return new HelloData();
}
}



Create Component

@Singleton@Component(modules = {AppModule.class,AndroidInjectionModule.class})
public interface AppComponent {

    @Component.Builder    interface Builder {
        @BindsInstance        Builder application(Application application);

        AppComponent build();
    }

    void inject(AppApplication aaApp);
}



Create Custom Application class


public class AppApplication extends Application implements HasActivityInjector {
    private AppComponent appComponent;
    private static AppApplication appApplication;
    @Inject    DispatchingAndroidInjector<Activity> activityDispatchingAndroidInjector;



    public static AppApplication getAppApplicationInsatnce() {
        return appApplication == null ? new AppApplication() : appApplication;
    }

    @Override    public void onCreate() {
        super.onCreate();
        DaggerAppComponent.builder().application(this).build().inject(this);
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }

    @Override    public AndroidInjector<Activity> activityInjector() {
        return activityDispatchingAndroidInjector;
    }
}

Now finally create Activity class

public class MainActivity extends AppCompatActivity {

   
    @Inject    HelloData helloData;


    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidInjection.inject(this);
        setContentView(R.layout.activity_main);


    }

    @Override    protected void onResume() {
        super.onResume();
       
        Log.e("TAG"," Comming msg-2  "+ helloData.sayHello());

    }
}



Thank you