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 类的新对象(即创建类的对象Fragment1Fragment2不是类型的对象Fragment。)

您正在做的方式是创建类型的对象,Fragment但使用类型Fragment1和初始化它Fragment2。这就是它给出错误的原因。

希望这可以帮助。

于 2013-06-26T02:38:12.437 回答