android片段中不可转换的类型

时间:2019-03-02 03:31:14

标签: android android-fragments

我是Android编程的新手,我正在尝试在Android Studio中创建一个乘法应用程序,以帮助孩子们使用片段学习基本的乘法表。我收到以下错误。

Inconvertible types; cannot cast 'android.app.Fragment' to 
'com.example.multiplication_with_fragments.FragmentTwo'

关于片段的主题,我还没有得到太多的了解,并且我一直在跟踪课堂上的示例代码。错误在下面的代码中的onButtonClick方法的第一行中引发。

public class MainActivity extends AppCompatActivity implements FragmentOne.ToolbarListener
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onButtonClick(int userAnswer, int correctAnswer)
    {
        FragmentTwo fragment = (FragmentTwo) 
             getFragmentManager().findFragmentById(R.id.fragment2);

        fragment.displayMessage(userAnswer, correctAnswer);
    } 

更正上面代码中的错误后,该程序将无法运行。当我尝试运行该程序时出现致命错误,该程序将不会显示在设备上。

16363-16363/com.example.multiplication_with_fragments 
E/AndroidRuntime: FATAL EXCEPTION: main

at com.example.multiplication_with_fragments.MainActivity.
onCreate(MainActivity.java:12)

第12行如下所示

setContentView(R.layout.activity_main);

如果需要更多说明或需要更多代码,请告诉我,并将其发布。

3 个答案:

答案 0 :(得分:0)

替换

FragmentTwo fragment = (FragmentTwo)getFragmentManager().findFragmentById(R.id.fragment2);

使用

FragmentTwo fragment = (FragmentTwo) getSupportFragmentManager().findFragmentById(R.id.fragment2);

答案 1 :(得分:0)

如果是V1,而您的getFragmentManager()是V4,则可能是您的片段版本。

您的片段版本应如下所示。

import android.support.v4.app.Fragment;

    public class MyBaseFragment extends Fragment {

        public ... {
           needs Fragment  v4 Fragment
                ....

        }

    }

答案 2 :(得分:0)

在FragmentTwo中,您已经导入了这种类型的片段

import android.app.Fragment;

因此,请删除上方的行,并在片段类型的下方导入

import android.support.v4.app.Fragment;