Ошибка при запуске TapTargetView (Material Design для пользователя справки при первой установке) в NavigationDrawer IllegalArgumentException: данный нулевой экземпляр - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь сделать базовое руководство c для пользователя, который сделал новую установку. Но я допустил ошибку.

Я пытаюсь использовать этот класс: com.getkeepsafe.taptargetview.ToolbarTapTarget

Я использовал NavigationDrawer для создания меню, которое управляет различными фрагментами. Я хочу, чтобы руководство TapTargerView открывалось при нажатии на любой элемент в меню.

Снимок экрана из Logcat:

A screenshot from Logcat

public class NavigationMain extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.drawer_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer,toolbar
                ,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        if (savedInstanceState == null){
            getSupportFragmentManager().beginTransaction().replace
                    (R.id.fragment_container, new BuySellFragment()).commit();
            navigationView.setCheckedItem(R.id.nav_buy_sell);
        }

    }
 public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.nav_list:
                new TapTargetSequence(this).targets(TapTarget.forToolbarNavigationIcon
                        ((android.widget.Toolbar) findViewById(R.id.nav_list),"title",
                        "desc")).listener(new TapTargetSequence.Listener() {

                    @Override
                    public void onSequenceFinish() {

                    }

                    @Override
                    public void onSequenceStep(TapTarget lastTarget, boolean targetClicked) {

                    }

                    @Override
                    public void onSequenceCanceled(TapTarget lastTarget) {

                    }
                }).start();

                getSupportFragmentManager().beginTransaction().replace
                        (R.id.fragment_container, new listFragment()).commit();
                break;

                case R.id.nav_buy_sell:
                getSupportFragmentManager().beginTransaction().replace
                        (R.id.fragment_container, new BuySellFragment()).commit();
                break;

        }

        drawer.closeDrawer(GravityCompat.START);

        return true;
    }
...