繁体   English   中英

FragmentTransaction类型的方法add(int,Fragment)不适用于参数(int,WeatherFragment)

The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, WeatherFragment)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在片段中有错误:

“片段事务类型中的方法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);
    }
}
3 个回复

片段的导入应更改。 这是错误的:

import android.support.v4.app.Fragment;

正确的导入是:-

import android.app.Fragment;

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

WebViewFragmentandroid.app.Fragment子类,因此您无法使用android.support.v4.app.FragmentManager添加它。 您必须使用android.app.FragmentManager

因此,我执行以下步骤才能使用WebViewFragment

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

我希望这会有所帮助。

好的,无论WeatherFragment是什么,它都不是Fragment类型的,并且不存在可以处理WeatherFragment的构造函数。 也许您可以将其转换为Fragment。 不能告诉它是什么。

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

7 FragmentTransaction不适用于参数(int,FragmentActivity)

请在这个应用程序上工作,框架工作很好,但是我想实现一个像gmail那样的菜单,它是幻灯片导航菜单,但是我所有的活动都是从fragmentactivity类而不是jst activity扩展的。 所以在我的主要活动中,这也可以扩展片段活动 我有这个。 但是收到一个错误消息,消息“ ...

2015-01-08 20:17:15 0 63   android
10 ArrayBoss 类型中的方法 (int[]) 不适用于参数 ()

我正在创建一个类,该类具有一个接受整数的构造函数,并创建一个整数数组、双精度数组和整数大小的字符数组。 我想在驱动程序类中测试我的代码,但我不知道如何在我的 toString 方法中调用我的方法 StealIntegerArray。 我知道stealIntegerArray 方法中的代码很可能是非常 ...

2020-11-17 21:17:43 1 35   java
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM