1

ActionBarSherlock フラグメント タブをいくつか試しています。現在、コードにいくつかの問題があります。フラグメントで個々のタブリスナを使用しています。可能であればコードを修正してください。

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;




public class FragmentsTab1 extends SherlockFragmentActivity implements
ActionBar.TabListener{
    private Fragment mFragment;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment1);

    }
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        mFragment = new FragmentsTab1(); //Type mismatch: cannot convert from FragmentsTab1 to Fragment
        ft.add(android.R.id.content, mFragment);
        ft.attach(mFragment);
    }
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        ft.remove(mFragment);
    }
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

}

エラー コード: タイプの不一致: FragmentsTab1 から Fragment に変換できません

Dixit Patelによる提案

import android.os.Bundle;
import android.app.Fragment;
import android.app.FragmentTransaction;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;




public class FragmentsTab1 extends SherlockFragmentActivity implements
ActionBar.TabListener{
    private Fragment mFragment;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment1);

    }
    /**
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        mFragment = new FragmentsTab1();
        ft.add(android.R.id.content, mFragment);
        ft.attach(mFragment);
    }
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        ft.remove(mFragment);
    }
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

    **/
    public void onTabSelected(Tab tab,
            android.support.v4.app.FragmentTransaction ft) {
        // TODO Auto-generated method stub
        mFragment = new FragmentsTab1(); //Type mismatch: cannot convert from FragmentsTab1 to Fragment
        ft.add(android.R.id.content, mFragment); //The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, Fragment)
        ft.attach(mFragment); //The method attach(Fragment) in the type FragmentTransaction is not applicable for the arguments (Fragment)
    }
    public void onTabUnselected(Tab tab,
            android.support.v4.app.FragmentTransaction ft) {
        // TODO Auto-generated method stub
        ft.remove(mFragment); //The method remove(Fragment) in the type FragmentTransaction is not applicable for the arguments (Fragment)
    }
    public void onTabReselected(Tab tab,
            android.support.v4.app.FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

}
4

2 に答える 2

0

あなたが得るエラーはあなたのためにそれを言います:

  • タイプの不一致: FragmentsTab1 から Fragment に変換できません

FragmentsTab1 は aFragmentではありません -SherlockFragmentActivityつまり anActivityです。

Fragmentaと anの違いを理解できるように、コードを書き直す必要がありますActivity


さらに説明します。

あなたのコードは言う:

 mFragment = new FragmentsTab1();

しかし、あなたは宣言しました:

 public class FragmentsTab1 extends SherlockFragmentActivity implements

ActionBar.TabListener

private Fragment mFragment;

何をしようとしているのかはわかりませんが、これは比較的単純な Java エラーであることはわかります。そのため、 と の違いを理解しようとすることをお勧めしFragmentますActivity

Java の継承とサブクラスがどのように機能するかについて読むことをお勧めします。Web には Java を学習するためのリソースがたくさんあります。

互いに継承していない場合、あるタイプを別のタイプに「キャスト」できないことがわかります。「キャスティング」がエラーの内容です。Caraは a に似たタイプのオブジェクトであると言っているようなものですSoccerPlayerが、実際には関連していません。


そうは言っても、ActionBarSherlock sdk のサンプル コードを使用することを強くお勧めします。必要なものが提供されるからです。独自のアプリの出発点として使用すると非常に便利です。

于 2013-02-05T09:03:53.420 に答える