Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从通知中打开片段?_Java_Android_Android Fragments_Notifications_Fragment - Fatal编程技术网

Java 如何从通知中打开片段?

Java 如何从通知中打开片段?,java,android,android-fragments,notifications,fragment,Java,Android,Android Fragments,Notifications,Fragment,我有一个应用程序,当按下“+”时会创建一个新片段。每个片段都有当前片段的“通知创建按钮” 单击后,我需要在当前片段上显示提示通知 我需要从通知中打开片段(从任务栏),例如:我从第5个片段创建通知,然后我将单击该通知,该操作必须打开第5个片段。我怎样才能解决它?谢谢大家! 我的主要活动 public class MainActivity extends FragmentActivity { public ViewPager2 viewPager; public FragmentStateAd

我有一个应用程序,当按下“+”时会创建一个新片段。每个片段都有当前片段的“通知创建按钮”

  • 单击后,我需要在当前片段上显示提示通知

  • 我需要从通知中打开片段(从任务栏),例如:我从第5个片段创建通知,然后我将单击该通知,该操作必须打开第5个片段。我怎样才能解决它?谢谢大家!

  • 我的主要活动

    public class MainActivity extends FragmentActivity {
    
    public ViewPager2 viewPager;
    public FragmentStateAdapter pagerAdapter;
    
    public FragmentTransaction fragmentTransaction;
    public InitFragment initFragment;
    public String CHANNEL_ID = "1";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
    
        createNotificationChannel();
    
    
        initFragment = new InitFragment();
    
        fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.fragment, initFragment);
        fragmentTransaction.commit();
    
    
    
        viewPager = findViewById(R.id.view_pager_2);
        pagerAdapter = new MainActivityAdapter(this);
        viewPager.setAdapter(pagerAdapter);
    
    }
    
    private void createNotificationChannel() {
    
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            CharSequence name = getString(R.string.channel_name);
            String description = getString(R.string.channel_description);
            int importance = NotificationManager.IMPORTANCE_HIGH;
    
            NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
            channel.setDescription(description);
    
            NotificationManager notificationManager = getSystemService(NotificationManager.class);
            notificationManager.createNotificationChannel(channel);
        }
    }
    
    
    @Override
    public void onBackPressed() {
        if (viewPager.getCurrentItem() == 0) {
            super.onBackPressed();
        } else {
            viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
        }
    }
    
    
    
    private class MainActivityAdapter extends FragmentStateAdapter {
        public MainActivityAdapter(FragmentActivity fa) {
            super(fa);
        }
    
        @Override
        public Fragment createFragment(int position) {
            return new InitFragment();
        }
    
        @Override
        public int getItemCount() {
            return getSupportFragmentManager().getBackStackEntryCount();
        }
    }
    
    我的碎片

    public class InitFragment extends Fragment {
    
    public FragmentTransaction fragmentTransaction;
    public Integer notificationId, i;
    public TextView tv;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
    }
    
    
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    
    
    
        ImageButton ibCreate = view.findViewById(R.id.fragment_create_btn);
        ImageButton ibDelete = view.findViewById(R.id.fragment_delete_btn);
        Button btn = view.findViewById(R.id.notification_create_btn);
    
    
        tv = view.findViewById(R.id.fragment_counter_tv);
    
        if(getParentFragmentManager().getBackStackEntryCount() == 0){
    
            ibDelete.setVisibility(View.INVISIBLE);
            tv.setText("1");
        }
    
    
        View.OnClickListener ocl = new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                fragmentTransaction = getParentFragmentManager().beginTransaction();
                fragmentTransaction.add(R.id.fragment, new InitFragment());
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
    
            }
    
        };
    
        ibCreate.setOnClickListener(ocl);
    
    
        View.OnClickListener ocl2 = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fragmentTransaction = getParentFragmentManager().beginTransaction();
                fragmentTransaction.remove(InitFragment.this);
                getParentFragmentManager().popBackStack();
                fragmentTransaction.commit();
            }
        };
        ibDelete.setOnClickListener(ocl2);
    
    
        View.OnClickListener ocl3 = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                notificationInit();
    
            }
        };
        btn.setOnClickListener(ocl3);
    
        i = getParentFragmentManager().getBackStackEntryCount() + 1;
        tv.setText(i.toString());
        notificationId = Integer.parseInt(tv.getText().toString());
    
    
    }
    public void notificationInit(){
    
        String CHANNEL_ID = "1";
    
        Intent intent = new Intent(getContext(), InitFragment.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(getActivity(), 0,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);
    
        NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext(), CHANNEL_ID)
                .setSmallIcon(R.drawable.ic_launcher_background)
                .setContentTitle(tv.getText())
                .setContentText(tv.getText())
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .setContentIntent(pendingIntent);
    
        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getActivity());
        notificationManager.notify(notificationId, builder.build());
    }