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

标签 java android eclipse android-fragments import

我的 fragment 有错误:

"The method replace(int, Fragment) in the type Fragment Transaction is not applicable for the arguments (int, Fragment)"

我该怎么办?我的 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.support.v4.app.Fragment;

正确的导入是:-

导入 android.app.Fragment;

关于java - FragmentTransaction 类型中的方法 add(int, Fragment) 不适用于参数 (int, WeatherFragment),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29362730/

相关文章:

android - 如何在单个对话框中同时获取日期和时间

java - Eclipse如何将调试引用到本地代码而不是jar中

eclipse - 将动态 Web 项目转换为 Maven = 部署为空

java - 如何在 64 位计算机中处理长整数?如何确定物体的大小?

ScrollView 中线性布局的Android困难

android检测图像在webview中点击?

eclipse - JDK 9+ 不支持 clientBuilder.sslSocketFactory

Ant 构建中的 Javadoc 任务失败

java - 从 STS 中永久删除 Pivotal tc

java - 如何更改 JScrollPane 内容的颜色?