0

フラグメントの名前を入力すると、次のようにエラーが発生するという問題が発生しました。

Type mismatch: cannot convert from Fragment1 to Fragment

ここに私の MainActivity.java コードがあります:

package com.example.currencyconverter;


import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.LayoutInflater;
import android.view.View;


public class MainActivity extends Activity implements OnClickListener {

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

ActionBar actionBar = getActionBar();
actionBar.setSubtitle("Created By Rohit Nandakumar");
actionBar.setTitle("Currency Converter"); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

ActionBar.Tab Frag1 = actionBar.newTab().setText("Converter");
ActionBar.Tab Frag2 = actionBar.newTab().setText("Currencies");

Fragment fragment1 = new Fragment1();
Fragment fragment2 = new Fragment2();

Frag1.setTabListener(new MyTabsListener(fragment1));
Frag2.setTabListener(new MyTabsListener(fragment2));

actionBar.addTab(Frag1);
actionBar.addTab(Frag2);
}

ここに私のFragment1コードがあります:

package com.example.currencyconverter;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_main, container, false);
}
}

これは私のフラグメント2コードです:

package com.example.currencyconverter;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment2 extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_first, container, false);
}
}

MyTabsListener.java ファイルは次のとおりです。

package com.example.currencyconverter;

import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentTransaction;

public class MyTabsListener implements TabListener {

public Fragment fragment;

public MyTabsListener(Fragment fragment) {
    this.fragment = fragment;
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub
    ft.replace(R.id.fragment_container, fragment);

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

この問題は MainActivity.java ファイルで発生します。

Fragment fragment1 = new Fragment1();
Fragment fragment2 = new Fragment2();

new Fragment1();

そしてその

new Fragment2();

コードの一部が強調表示され、次のように表示されます。

Type mismatch: cannot convert from Fragment1 to Fragment

何が起こっている?私は何を間違っていますか?どんな助けでも大歓迎です。以前にもこの質問をしたことがありますが、正しい答えが得られませんでした。私は答えを見つけようとしてインターネット全体を検索しました。繰り返しますが、どんな助けも大歓迎です。

4

1 に答える 1

0

それ以外の:

Fragment fragment1 = new Fragment1();
Fragment fragment2 = new Fragment2();

やってみてください:

Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();

作成した Fragment クラスの新しいオブジェクトを作成する必要があります (つまり、 type のオブジェクトではなく、クラスFragment1のオブジェクトを作成します)。Fragment2Fragment

あなたがやっている方法では、タイプのオブジェクトを作成していますが、タイプとFragmentで初期化しています。そのため、エラーが発生しています。Fragment1Fragment2

お役に立てれば。

于 2013-06-26T02:38:12.437 に答える