листенер, чтобы по нажатию в контейнере менялся фрагмент, но никак не могу получить к нему доступ. Подскажите в чем может быть проблема?
Код:
package com.example.microgatgetsnew2;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatButton;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentContainerView;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager.widget.ViewPager;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
FragmentContainerView fragmentContainerViewHeader, fragmentContainerViewMenu, fragmentContainerViewMain;
TextView textViewCatalog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentContainerViewMain = findViewById(R.id.fragment_container_view_main);
fragmentContainerViewHeader = findViewById(R.id.fragment_container_view_header);
fragmentContainerViewMenu = fragmentContainerViewHeader.findViewById(R.id.fragment_container_view_menu);
textViewCatalog = fragmentContainerViewMenu.findViewById(R.id.textViewKatalog);
textViewCatalog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.setReorderingAllowed(true);
transaction.replace(R.id.fragment_container_view_main, CatalogFragment.class, null);
transaction.commit();
}
});
}
}
Разметка активити:
<?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="wrap_content"
tools:context=".MainActivity"
android:background="@color/background"
android:scrollbars="none">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container_view_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:name="com.example.microgatgetsnew2.HeaderFragment"/>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container_view_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/fragment_container_view_header"
android:name="com.example.microgatgetsnew2.MainFragment"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Братишка, в следующий раз для такого обьема кода используй ГитХаб репку и выучи уже Котлин, а то километры этого шлака тяжко читать )
А зачем функция онклик в сетонклик листенере?
ну студия сама ее там создает если в скобка указать листенер через new
xyu.setOnClickListener { openFrag(fragment_1.newInstance(), R.id.fragment_id) } private fun openFrag(f: Fragment, idHolder:Int) { supportFragmentManager .beginTransaction().replace(idHolder, f) .commit() }
Вот так это в котлине
А с чего ты взял что доступ к вью фрагмента происходит через контейнер
ну фрагмент отображается через контейнер, контейнер связан с вью - получилось предположение. Методов, который возвращают именно вью у контейнера не нашел(может быть плохо искал) решил делать так
Обсуждают сегодня