# Overriding Activities and Fragments
You can customize the UI by subclassing UI elements and then injecting them into the framework.
You should always do this just after Chat SDK activation.
Checkout the example [here](https://github.com/chat-sdk/chat-sdk-android/blob/master/app-demo/src/main/java/sdk/chat/demo/examples/override/OverrideViewExample.java).
### Override Activity
For example, to override the chat activity you would subclass the `PostRegistrationActivity` then use:
```Java
ChatSDKUI.setPostRegistrationActivity(CustomPostRegistrationActivity.class);
```
There is a method available for each of the activities in the app.
When you override the activity you can then override any of the functions in that activity. You can easily override the layout file like this:
```
@Override
protected int getLayout() {
return R.layout.activity_custom_post_registration;
}
```
### Override Fragment
```Java
ChatSDKUI.setPrivateThreadsFragment(new CustomPrivateThreadsFragment());
```
### Using the Fragments in your app
Usually the fragments are embedded in the `MainActivity`. The main activity reloads the fragments when the activity resumes. If you want to use the fragments in your own activity, you should either inherit from `MainActivity` or make sure that you call `loadData()` in your activity `onResume()`.
### Override the ChatActivity
If you are overriding the `ChatActivity` you will also need to define the main activity for your app like this:
```
ChatSDK.ui().setMainActivity(YourMainActivity.class);
```
When the user clicks back from the `ChatActivity` they will be taken to the app's main activity.
### Override ChatView
To do this first you need to override the `ChatActivity`. Create a new subclass of the `ChatActivity`
```
public class CustomChatActivity extends ChatActivity {
protected @LayoutRes
int getLayout() {
return R.layout.custom_activity_chat;
}
}
```
Also make a new xml layout file and copy the contents of `activity_chat` into it. Make sure you give this layout file a new name like `custom_activity_layout`
As you can see above, we override the `getLayout()` method and provide our custom layout file.
After Chat SDK initialization, register this subclass:
```
ChatSDK.ui().setChatActivity(CustomChatActivity.class);
```
Make a new subclass of the `ChatView` called `CustomChatView`.
```
public class CustomChatView extends ChatView {
public CustomChatView(Context context) {
super(context);
}
}
```
Open your `custom_activity_layout` file and find the section:
```
<sdk.chat.ui.views.ChatView
android:id="@+id/chatView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/messageInputLinearLayout"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
```
Change this to:
```
<sdk.chat.ui.views.CustomChatView
android:id="@+id/chatView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/messageInputLinearLayout"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
```
Now the `CustomChatView` will be inflated into the `ChatActivity` and you can customize it as necessary.