Как обработать прослушиватель другого фрагмента в MainActivity, используя вид нижней навигации? - PullRequest
0 голосов
/ 18 октября 2019

Доброе утро всем.

Я хочу обработать слушатель другого фрагмента в методе onCreate из MainActivity.

Однако, это не сработало.

MainActivity code:

public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        View inflatedView = getLayoutInflater().inflate(R.layout.fragment_notifications, null);
        Button searchBtn = (Button) inflatedView.findViewById(R.id.searchBtn);
        searchBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                outputText.setText("pressed");
                findDevice(); 
            }
        });

Вот что сейчас содержит папка ресурса макета:

Directory view of layout resource folder

//////////////////////////////////////////////////////////////////////////////

Итак, я сделал это в другом классе фрагментов. Но слушатель кнопки на фрагменте все еще не работал.

Это MainActivity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BottomNavigationView navView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.

        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications, R.id.navigation_message)
                .build();

        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
        NavigationUI.setupWithNavController(navView, navController);
    }
}

А это NotificationsFragment

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        notificationsViewModel =
                ViewModelProviders.of(this).get(NotificationsViewModel.class);
        View root = inflater.inflate(R.layout.fragment_notifications, container, false);
        final TextView textView = root.findViewById(R.id.text_notifications);
        notificationsViewModel.getText().observe(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });


        bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
        MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

        final View rootView = inflater.inflate(R.layout.fragment_notifications, container);
        outputText = (TextView) rootView.findViewById(R.id.outputTextView);
        inputEditText = (EditText) rootView.findViewById(R.id.inputEditText);
        sendBtn = (Button) rootView.findViewById(R.id.sendBtn); 
        final Button searchBtn = (Button) rootView.findViewById(R.id.searchBtn);

        searchBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                outputText.setText("pressed");
                inputEditText.setText("pressed");
                findDevice();
            }
        });
...