I am going to a basic example of custom callback method in android. We will follow step by step. First of all open Android studio and create a new project and open MainActivity.java class and than click on activity_main.xml layout and do the following:-
Step 1:-
ClassA:-
class_a.xml:-
<?xml version="1.0" encoding="utf-8"?>
class_b.xml:-
</RelativeLayout>
Step 1:-
<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/name"
android:layout_margin="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="==" />
<Button
android:id="@+id/next"
android:gravity="center"
android:layout_marginTop="60dp"
android:layout_gravity="bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next" />
</LinearLayout>
Step 2 Open MainActivity.java and do the code like following:-public class MainActivity extends AppCompatActivity { TextView tvName; Button next; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvName = (TextView) findViewById(R.id.name); next = (Button) findViewById(R.id.next); next.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { startActivity(new Intent(MainActivity.this,ClassA.class)); } }); ClassB.setCallback(new onDataUpdateListner() { @Override
public void getData(String name, String roll) { Toast.makeText(MainActivity.this,"Android00---",Toast.LENGTH_LONG).show(); tvName.setText("Name="+name+"\n"+"Roll="+roll); } }); } }Step 3 now create interface which will carry the callback method like following Here i created 2 interface :-
public interface onDataUpdateListner { //void setData();
void getData(String name,String roll);
}
Step 4 Now create 2 class ClassA and ClassB and code will be like following:-public interface onDataUpdateListnerA { void getDataA(String name, String roll); }
ClassA:-
class_a.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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/roll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RollNumber"
android:gravity="center_vertical"
android:textAlignment="center"
android:layout_margin="20dp"/>
<Button
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/roll"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="Next" />
</RelativeLayout>
public class ClassA extends AppCompatActivity { TextView tvRoll; Button next; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.class_a); tvRoll = (TextView) findViewById(R.id.roll); next = (Button) findViewById(R.id.next); next.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { startActivity(new Intent(ClassA.this, ClassB.class)); } }); ClassB.setCallbackA(new onDataUpdateListnerA() { @Override
public void getDataA(String name, String roll) { tvRoll.setText("Name=" + name + "\n" + "Roll=" + roll); } }); } }ClassB:-
class_b.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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/enter_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:hint="Name" />
<EditText
android:id="@+id/enter_roll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/enter_name"
android:layout_margin="20dp"
android:hint="Roll Number" />
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/enter_roll"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="Ok" />
public class ClassB extends AppCompatActivity { EditText edName, edRoll; Button ok; public static onDataUpdateListner onDataUpdateListner; public static onDataUpdateListnerA onDataUpdateListnerA; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.class_b); edName = (EditText) findViewById(R.id.enter_name); edRoll = (EditText) findViewById(R.id.enter_roll); ok = (Button) findViewById(R.id.ok); ok.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { if(ClassB.onDataUpdateListner != null && ClassB.onDataUpdateListnerA!= null) { onDataUpdateListner.getData(edName.getText().toString(),edRoll.getText().toString()); onDataUpdateListnerA.getDataA(edName.getText().toString(),edRoll.getText().toString()); } finish(); } }); } public static void setCallbackA(onDataUpdateListnerA callbackA) { onDataUpdateListnerA = callbackA; } public static void setCallback(onDataUpdateListner listner ) { onDataUpdateListner = listner; } }Output:-
No comments:
Post a Comment