/*
========================================================================================
Filename: 24_ThreeActivityApp.txt
Program 24: Develop an Android application using Java consisting of three activities. The application must use Explicit Intents, Intent Extras, RadioButtons, CheckBoxes, Options Menu.
Files Included: MainActivity.java, SecondActivity.java, ThirdActivity.java, main_menu.xml
========================================================================================

WHAT ALL TO DO / SETUP INSTRUCTIONS:
----------------------------------------------------------------------------------------
1. UI Components to Add (in res/layout/activity_main.xml):
   Activity 1 (activity_main.xml):
     - 2 EditText (TextBox): etName (Enter Name), etAge (Enter Age)
     - 1 Button: Text: 'Next', onClick: 'nextPage'
     - 1 TextView heading: 'Student Registration'
   Activity 2 (activity_second.xml):
     - 1 RadioGroup with 2 RadioButtons: rbMale, rbFemale
     - 1 Button: Text: 'Next', onClick: 'nextPage'
   Activity 3 (activity_third.xml):
     - 3 CheckBox: cbJava, cbAndroid, cbPython
     - 1 Button: Text: 'Submit', onClick: 'submit'
     - TextView: tvDetails

2. Layout Configuration:
   - LinearLayout (vertical, gravity='center', padding 20dp)

3. Menu Configuration:
   - Create res/menu/main_menu.xml with menuClear ('Clear') and menuExit ('Exit').

4. Themes Configuration (res/values/themes.xml):
   - Default theme with ActionBar.

5. AndroidManifest.xml:
   Register SecondActivity and ThirdActivity:
   <activity android:name=".SecondActivity" android:exported="false" />
   <activity android:name=".ThirdActivity" android:exported="false" />

6. Additional Files & Resources Required:
   - Create SecondActivity.java, ThirdActivity.java, and options menu in all activities.
========================================================================================
*/

// ======================================================================================
// File: MainActivity.java
// ======================================================================================
package com.example.studentregistration;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    EditText etName, etAge;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etName = findViewById(R.id.etName);
        etAge = findViewById(R.id.etAge);
    }
    public void nextPage(View view) {
        String name = etName.getText().toString();
        String age = etAge.getText().toString();
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        intent.putExtra("name", name);
        intent.putExtra("age", age);
        startActivity(intent);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.menuClear) {
            etName.setText("");
            etAge.setText("");
            return true;
        }
        if (item.getItemId() == R.id.menuExit) {
            finishAffinity();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

// ======================================================================================
// File: SecondActivity.java
// ======================================================================================
package com.example.studentregistration;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import androidx.appcompat.app.AppCompatActivity;
public class SecondActivity extends AppCompatActivity {
    RadioGroup radioGroup;
    String name, age;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        radioGroup = findViewById(R.id.radioGroup);
        name = getIntent().getStringExtra("name");
        age = getIntent().getStringExtra("age");
    }
    public void nextPage(View view) {
        int selectedId = radioGroup.getCheckedRadioButtonId();
        if (selectedId == -1) {
            return;
        }
        RadioButton radioButton = findViewById(selectedId);
        String gender = radioButton.getText().toString();
        Intent intent = new Intent(SecondActivity.this, ThirdActivity.class);
        intent.putExtra("name", name);
        intent.putExtra("age", age);
        intent.putExtra("gender", gender);
        startActivity(intent);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.menuClear) {
            radioGroup.clearCheck();
            return true;
        }
        if (item.getItemId() == R.id.menuExit) {
            finishAffinity();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

// ======================================================================================
// File: ThirdActivity.java
// ======================================================================================
package com.example.studentregistration;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class ThirdActivity extends AppCompatActivity {
    TextView tvDetails;
    CheckBox cbJava, cbAndroid, cbPython;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
        tvDetails = findViewById(R.id.tvDetails);
        cbJava = findViewById(R.id.cbJava);
        cbAndroid = findViewById(R.id.cbAndroid);
        cbPython = findViewById(R.id.cbPython);
        String name = getIntent().getStringExtra("name");
        String age = getIntent().getStringExtra("age");
        String gender = getIntent().getStringExtra("gender");
        tvDetails.setText(
                "Name : " + name +
                        "\nAge : " + age +
                        "\nGender : " + gender
        );
    }
    public void submit(View view) {
        String courses = "";
        if (cbJava.isChecked())
            courses += "Java ";
        if (cbAndroid.isChecked())
            courses += "Android ";
        if (cbPython.isChecked())
            courses += "Python ";
        Toast.makeText(
                this,
                "Selected Courses: " + courses,
                Toast.LENGTH_LONG
        ).show();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.menuClear) {
            cbJava.setChecked(false);
            cbAndroid.setChecked(false);
            cbPython.setChecked(false);
            return true;
        }
        if (item.getItemId() == R.id.menuExit) {
            finishAffinity();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

// ======================================================================================
// File: res/menu/main_menu.xml
// ======================================================================================
<?xml version="1.0" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/menuClear" android:title="Clear" app:showAsAction="never"/>
    <item android:id="@+id/menuExit" android:title="Exit" app:showAsAction="never"/>
</menu>

