質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Wear

Android Wearとは、Googleが発表した腕時計型ウェアラブルデバイス(スマートウォッチ)向けのプラットフォームです。GoogleのAndroid OSをベースにしており、情報の入手・管理などを行うことができます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

2回答

1982閲覧

TabHostについて

TakamasaAwai

総合スコア73

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Wear

Android Wearとは、Googleが発表した腕時計型ウェアラブルデバイス(スマートウォッチ)向けのプラットフォームです。GoogleのAndroid OSをベースにしており、情報の入手・管理などを行うことができます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2015/07/10 10:46

AndroidのTabHostについて質問です。

lang

1@Override 2protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 // Create the adapter that will return a fragment for each of the three 7 // primary sections of the activity. 8 mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager()); 9 10 // Set up the ViewPager with the sections adapter. 11 mViewPager = (ViewPager) findViewById(R.id.pager); 12 mViewPager.setAdapter(mSectionsPagerAdapter); 13 14 TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); 15 tabHost.setup(); 16 17 for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 18 tabHost.addTab(tabHost 19 .newTabSpec(String.valueOf(i)) 20 .setIndicator(mSectionsPagerAdapter.getPageTitle(i)) 21 .setContent(android.R.id.tabcontent)); 22 } 23 24 tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { 25 @Override 26 public void onTabChanged(String tabId) { 27 mViewPager.setCurrentItem(Integer.valueOf(tabId)); 28 } 29 }); 30 31 mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){ 32 @Override 33 public void onPageSelected(int position) { 34 super.onPageSelected(position); 35 tabHost.setCurrentTab(position); 36 } 37 }); 38}

このコードで、最後の tabHost.setCurrentTab(position); の部分にエラーが出ます。エラー内容はVariable ’tabHost’ is accessed from within inner class, needs to be declar final です。どこをfinalにすれば良いですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんにちは。LiT!のごっちゃんです!笑

swordoneさんの言うとおり、finalにするのもいいですが、
原因を言うと、内部クラスからは呼び出すことができないのが原因です。
呼び出すためには、final(定数)にするか、メンバ変数(クラスの外に書く)方法があります。

finalにすると、後から編集ができなく、都合が悪い場合もあると思いますので、メンバ変数の方法をおすすめします。

lang

1 2TabHost tabHost; 3 4@Override 5protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 9 // Create the adapter that will return a fragment for each of the three 10 // primary sections of the activity. 11 mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager()); 12 13 // Set up the ViewPager with the sections adapter. 14 mViewPager = (ViewPager) findViewById(R.id.pager); 15 mViewPager.setAdapter(mSectionsPagerAdapter); 16 17 tabHost = (TabHost) findViewById(android.R.id.tabhost); 18 tabHost.setup(); 19 20 for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 21 tabHost.addTab(tabHost 22 .newTabSpec(String.valueOf(i)) 23 .setIndicator(mSectionsPagerAdapter.getPageTitle(i)) 24 .setContent(android.R.id.tabcontent)); 25 } 26 27 tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { 28 @Override 29 public void onTabChanged(String tabId) { 30 mViewPager.setCurrentItem(Integer.valueOf(tabId)); 31 } 32 }); 33 34 mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){ 35 @Override 36 public void onPageSelected(int position) { 37 super.onPageSelected(position); 38 tabHost.setCurrentTab(position); 39 } 40 }); 41}

僕は、このようにすることをおすすめします。

投稿2015/07/10 11:08

RitsukiGoto

総合スコア99

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーの通り,"tabHost"をfinalにしてください.

lang

1 final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);

投稿2015/07/10 10:56

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問