【解決方法】特定のリスト項目をクリックして特定のフラグメントを開く方法は?


私は本のアプリケーションを構築しようとしています。 現在、私のアプリケーションには2つのアクティビティがあります。最初のアクティビティは「MainActivity」で、コンテンツリストを書き込んでいます。 2番目は「ShowPage」アクティビティです。ページのようなものを使用しているフラグメントを表示するためにShowPageアクティビティを使用しています。 MainActivity では、コンテンツにリスト ビューを使用します。 私の問題は、最初のコンテンツをクリックすると最初のページが希望どおりに開くことですが、3番目または4番目または5番目のコンテンツをクリックすると最初のページも開き、5番目または他の誰かのような他のページが必要です。 この問題の解決策を見つけるのを手伝ってください。 MainActivity コード、ShowPage アクティビティ コード、およびアダプター コードを以下に示します。

MainActivity コード。

package com.exe.testbook;

import ...

public class MainActivity extends AppCompatActivity {

    ListView listView;
    String[] surah = {"C01","C02","C03","C04","C05","C06","C07","C08","C09"};

    private DrawerLayout dl;
    private ActionBarDrawerToggle abdt;

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

        //list view portion
        listView = findViewById(R.id.list_view);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simple_dropdown, surah);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View v, int i, long l) {
                switch (i)
                {
                    case 0:
                        Intent intent = new Intent(MainActivity.this, ShowPage.class);
                        startActivity(intent);
                        break;
		    case 1:
                        Intent intent = new Intent(MainActivity.this, ShowPage.class);
                        startActivity(intent);
                        break;
		    case 2:
                        Intent intent = new Intent(MainActivity.this, ShowPage.class);
                        startActivity(intent);
                        break;
                }
            }
        });



        //navigation view portion
        dl = (DrawerLayout) findViewById(R.id.dl);
        abdt = new ActionBarDrawerToggle(this, dl, R.string.open,R.string.close);
        abdt.setDrawerIndicatorEnabled(true);
        dl.addDrawerListener(abdt);
        abdt.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        NavigationView nav_view = (NavigationView) findViewById(R.id.nav_view);
        nav_view.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                int id = item.getItemId();
                if (id==R.id.marker){
                    Toast.makeText(MainActivity.this, "'Marker' is clicked.", Toast.LENGTH_SHORT).show();
                }
                return true;
            }
        });

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        if (abdt.onOptionsItemSelected(item)) return true;
        if (super.onOptionsItemSelected(item)) return true;
        return false;
    }
}

ShowPage アクティビティ コード。

package com.exe.testbook;

import ...

public class ShowPage extends AppCompatActivity {

    ViewPager viewPager;

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

        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        viewPager = findViewById(R.id.viewPager);

        if (viewPager != null){
            viewPagerAdapter adapter = new viewPagerAdapter(getSupportFragmentManager());
            viewPager.setAdapter(adapter);
        }


    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case android.R.id.home:
                this.finish();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

私が試したこと:

アダプターコード。

package com.exe.testbook;

import ...

public class viewPagerAdapter extends FragmentPagerAdapter {

    private int COUNT = 10;

    public viewPagerAdapter(@NonNull FragmentManager fm) {
        super(fm);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {

        Fragment fragment = null;

        switch (position){

            case 0:
                fragment = new Page1();
                break;
            case 1:
                fragment = new Page2();
                break;
            case 2:
                fragment = new Page3();
                break;
            case 3:
                fragment = new Page4();
                break;
            case 4:
                fragment = new Page5();
                break;
            case 5:
                fragment = new Page6();
                break;
            case 6:
                fragment = new Page7();
                break;
            case 7:
                fragment = new Page8();
                break;
            case 8:
                fragment = new Page9();
                break;
            case 9:
                fragment = new Page10();
                break;

        }

        return fragment;
    }

    @Override
    public int getCount() {
        return COUNT;
    }

}

コメント

タイトルとURLをコピーしました