我在片段中有错误:
“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);
}
}
答案 0 :(得分:1)
应更改片段的导入。 这是错的: -
import android.support.v4.app.Fragment;
正确导入是: -
import android.app.Fragment;
答案 1 :(得分:0)
我遇到了同样的问题,当我意识到这一点时我解决了这个问题:
WebViewFragment
是android.app.Fragment
的子类,因此您无法使用android.support.v4.app.FragmentManager
添加它。你必须使用android.app.FragmentManager
所以我执行以下步骤才能使用WebViewFragment
android.app.Fragment
而不是android.support.v4.app.Fragment
FragmentManager
更改为android.app.FragmentManager
而非android.support.v4.app.FragmentManager
getFragmentManager()
代替getSupportFragmentManager
我希望这会有所帮助。
答案 2 :(得分:-1)
无论WeatherFragment是什么,它都不是Fragment类型,也不存在可以处理WeatherFragment的构造函数。 也许你可以将它投射到Fragment。不知道它是什么,不能告诉。
清晨的错误。答案的第一部分是;)他正在使用自己的班级WeatherFragment
。我无法看到这一点,我认为它不是一个(正确的)片段。