Demo App
Demo App
4. **Individual Activities** - Each menu option leads to its own activity (e.g.,
SettingsActivity.java).
#### 1. **LoginActivity.java**
```java
Package com.example.tourapp;
Import android.content.Intent;
Import android.os.Bundle;
Import android.view.View;
Import android.widget.Button;
Import androidx.appcompat.app.AppCompatActivity;
Super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
startActivity(intent);
});
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
startActivity(intent);
});
}
}
```
#### 2. **HomeActivity.java**
This activity serves as the main dashboard after login and hosts the
navigation drawer.
```java
Package com.example.tourapp;
Import android.content.Intent;
Import android.os.Bundle;
Import androidx.appcompat.app.AppCompatActivity;
Import androidx.drawerlayout.widget.DrawerLayout;
Import android.view.MenuItem;
Import com.google.android.material.navigation.NavigationView;
@Override
Super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(new
NavigationView.OnNavigationItemSelectedListener() {
@Override
Switch (item.getItemId()) {
Case R.id.nav_settings:
startActivity(new Intent(HomeActivity.this,
SettingsActivity.class));
break;
case R.id.nav_history:
startActivity(new Intent(HomeActivity.this,
HistoryActivity.class));
break;
case R.id.nav_contact:
startActivity(new Intent(HomeActivity.this,
ContactUsActivity.class));
break;
case R.id.nav_about:
startActivity(new Intent(HomeActivity.this,
AboutActivity.class));
break;
case R.id.nav_feedback:
startActivity(new Intent(HomeActivity.this,
FeedbackActivity.class));
break;
case R.id.nav_payment:
startActivity(new Intent(HomeActivity.this,
PaymentActivity.class));
break;
return true;
});
```
```xml
<menu xmlns:android=http://schemas.android.com/apk/res/android>
<item
Android:id=”@+id/nav_settings”
Android:title=”Settings” />
<item
Android:id=”@+id/nav_history”
Android:title=”History” />
<item
Android:id=”@+id/nav_contact”
<item
Android:id=”@+id/nav_about”
<item
Android:id=”@+id/nav_feedback”
Android:title=”Feedback” />
<item
Android:id=”@+id/nav_payment”
Android:title=”Payment” />
</menu>
```
```xml
<androidx.drawerlayout.widget.DrawerLayout
Xmlns:android=http://schemas.android.com/apk/res/android
Android:id=”@+id/drawer_layout”
Android:layout_width=”match_parent”
Android:layout_height=”match_parent”>
<FrameLayout
Android:layout_width=”match_parent”
Android:layout_height=”match_parent”>
</FrameLayout>
<com.google.android.material.navigation.NavigationView
Android:id=”@+id/nav_view”
Android:layout_width=”wrap_content”
Android:layout_height=”match_parent”
Android:layout_gravity=”start”
App:menu=”@menu/drawer_menu” />
</androidx.drawerlayout.widget.DrawerLayout>
```
Each menu option has its own activity. For example, here’s the
`SettingsActivity.java`:
```java
Package com.example.tourapp;
Import android.os.Bundle;
Import androidx.appcompat.app.AppCompatActivity;
@Override
Super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
```
```xml
<LinearLayout
Xmlns:android=http://schemas.android.com/apk/res/android
Android:layout_width=”match_parent”
Android:layout_height=”match_parent”
Android:orientation=”vertical”
Android:padding=”16dp”>
<TextView
Android:layout_width=”wrap_content”
Android:layout_height=”wrap_content”
Android:text=”Settings Page”
Android:textSize=”20sp”
Android:textStyle=”bold” />
</LinearLayout>
```
<application
<activity android:name=”.MainActivity”>
<intent-filter>
</intent-filter>
</activity>
</application>
```
- Customize each layout and activity based on your specific app’s needs.