Introduction
In this article, we are going to learn how to pass data using the interface in android. In android, when we are working on a large project, most of the time we need to pass data from one activity to another activity or one fragment to another fragment. The interface is one efficient technique to pass data from one class to another class.
Prerequisite
- Basic knowledge of java
- Basic knowledge of Interface. You can learn the Interface by clicking here
- Basic knowledge of android
Let's start with the implementation.
Step 1
Create a new project in android studio and select an empty activity.
Step 2
Import a HeadSet icon from Vector Asset in android and set its id named ic_headset.
Step 3
Go to activity_main.xml and add the following code:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageview"
android:visibility="visible"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/ic_headset"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Here we take an imageview that is used to show the headset icon when the headphone plugin to our android device.
Step 5
Create an interface named OnDataShowListener and add the below code:
package com.example.interfaceexample;
public interface OnDataShowListener {
void show(String data);
}
Here we are creating an interface and defining a method named show. We take a string parameter in the show() method.
Step 4
Create a new class named MyReceiver.java. This class is extended to the BroadcastReceiver class.
package com.example.interfaceexample;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver {
OnDataShowListener listener;
public MyReceiver(OnDataShowListener listener) {
this.listener = listener;
}
@Override
public void onReceive(Context context, Intent intent) {
String action=intent.getAction();
if(Intent.ACTION_HEADSET_PLUG.equals(action)){
//condition to check headset plugin or not
if (intent.getIntExtra("state",-1) == 0) {
// head set not plug-in
listener.show("0");
} else {
// headset plug-in
listener.show("1");
}
}
}
}
Here, we create an OnDataShowListener object and initialize this inside the class constructor. Inside the onReceive() method, we get the intent action using the getAction() method, and then we apply the condition to check whether the event occurred or not. If the event occurred, then we pass "1" to the interface method. Otherwise, we pass "0" to the interface method.
Step 5
Go to MainActivity.java and add the below code:
package com.example.interfaceexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity implements OnDataShowListener{
ImageView imageView;
MyReceiver receiver;
IntentFilter filter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=findViewById(R.id.imageview);
filter=new IntentFilter(Intent.ACTION_HEADSET_PLUG);
receiver=new MyReceiver(this);
}
@Override
protected void onResume() {
super.onResume();
registerReceiver(receiver,filter);
}
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(receiver);
}
@Override
public void show(String data) {
if(data.equals("1")){
imageView.setVisibility(View.VISIBLE);
}else{
imageView.setVisibility(View.INVISIBLE);
}
}
}
Here, we create the IntentFilter object, MyReceiver class object, and ImageView object. Inside the onCreate() method, we initialize the imageview, intent-filter, and receiver objects. During the initialization of the receiver object, we pass this as a parameter. Here, we are passing listener to MyReceiver class. We call the registerReceiver() method inside onResume() method and call the unregisterReceiver method inside the onStop() method.
Important Point
Here we need to implement OnDataShowListener, so we are using the implements keyword. Now we need to override the show method. Inside this method we get the data from the interface. If the value is 1 then we set the imageview visibility to VISIBLE; otherwise, set it to INVISIBLE.
Step 6
Press the run button and launch the application.
Output
Conclusion
In this article, we have seen how to pass data using an interface in android. Thanks for reading and I hope you liked it. If you have any suggestions or queries about this article, please share your thoughts. You can read my other articles by clicking here.
Happy learning, friends!