【问题标题】:The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, WeatherFragment)FragmentTransaction 类型中的方法 add(int, Fragment) 不适用于参数 (int, WeatherFragment)
【发布时间】:2015-06-04 10:38:51
【问题描述】:

我在片段中有错误:

"Fragment Transaction 类型中的方法replace(int, Fragment)为 不适用于参数 (int, Fragment)"

我该怎么办?我的片段没有出现。

    package com.example.weather;

    import android.support.v7.app.ActionBarActivity;

    import android.support.v4.app.Fragment;

    import android.text.InputType;
    import android.app.AlertDialog;

    import android.content.DialogInterface;

    import android.os.Bundle;

    import android.view.LayoutInflater;

    import android.view.Menu;

    import android.view.MenuItem;

    import android.view.View;

    import android.view.ViewGroup;

    import android.widget.EditText;

    import android.os.Build;

    public class WeatherActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_weather);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new WeatherFragment())
                    .commit();
        }
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == R.id.change_city){
            showInputDialog();
        }
        return false;
    }

    private void showInputDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Change city");
        final EditText input = new EditText(this);
        input.setInputType(InputType.TYPE_CLASS_TEXT);
        builder.setView(input);
        builder.setPositiveButton("Go", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                changeCity(input.getText().toString());
            }
        });
        builder.show();
    }

    public void changeCity(String city){
        WeatherFragment wf = (WeatherFragment) getFragmentManager()
                .findFragmentById(R.id.container);
        wf.changeCity(city);
        new CityPreference(this).setCity(city);
    }
}

【问题讨论】:

  • 您是否定义了自己的名为 Fragment 的类型,它不扩展 android.app.Fragment?
  • 标题错误与相关错误不匹配。请确定您需要帮助的错误。
  • 不好意思,看不清楚说清楚
  • 行有错误,我无法解决问题对不起我的英语,我有点弱类型

标签: java android eclipse android-fragments import


【解决方案1】:

片段的导入应该改变。 这是错误的:-

import android.support.v4.app.Fragment;

正确的导入是:-

import android.app.Fragment;

【讨论】:

  • 你怎么知道他没有使用支持片段?
  • 以前我花了两天时间解决初学者级别的相同问题。所以我只是猜测。可能会有所帮助
  • 啊,好吧。答案只是让它看起来像是一个事实,但我无法确定你是如何知道这是问题所在:)
【解决方案2】:

我遇到了同样的问题,当我意识到这一点时我就解决了:

WebViewFragmentandroid.app.Fragment 的子类,因此您不能使用 android.support.v4.app.FragmentManager 添加它。你必须使用android.app.FragmentManager

所以我执行以下步骤才能使用WebViewFragment

  1. 我将 Fragments 的超类更改为 android.app.Fragment 而不是 android.support.v4.app.Fragment
  2. 我将FragmentManager 更改为android.app.FragmentManager 而不是android.support.v4.app.FragmentManager
  3. 我使用getFragmentManager() 而不是getSupportFragmentManager

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

    无论 WeatherFragment 是什么,它都不是 Fragment 类型,并且不存在可以处理 WeatherFragment 的构造函数。 也许您可以将其转换为 Fragment。不知道是什么就说不出来。

    清晨的错误。答案的第一部分是;)他正在使用他自己的课程WeatherFragment。看不到这一点,我认为它不是(正确的)片段。

    【讨论】:

    • 您绝对不能将不是 Fragment 子类型的东西转换为 Fragment。
    • 所以我把它换成了一条Treeline
    • 没有人帮帮我请
    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多