[ad_1]
私は本のアプリケーションを構築しようとしています。 現在、私のアプリケーションには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; } }
[ad_2]
コメント