我有一个Android应用程序,其中listview显示一些项目 - “电影”,当您点击某个项目时,它会为您提供删除或更新项目的选项。删除工作正常,当您单击更新时,它会打开一个新片段,其中包含正确填充在编辑文本框中的电影的详细信息。我正在试图找出如何让这个新片段上的更新按钮工作。
首先我扩展了FragmentActivity,这是一个Activity还是Fragment?我应该使用其他东西吗?当我去上添加点击收听我的按钮就像我在之前的“ListFragment”这样做是不会让我叫“getActivity()”或列表中的“getListAdapter()”来引用当前选定的项目。我应该在这里打电话/如何引用当前的片段/活动?
我应该在单独的方法中使用onCreate吗?我知道这里有很多问题,但我真的想了解到底发生了什么。任何帮助将非常感激。这是我的代码看起来像FragmentActivity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.film_activity);
//adds listeners to buttons
updateButton = (Button) findViewById(R.id.update_button);
filmTitleView = (EditText) findViewById(R.id.textView_title);
filmDirectorView = (EditText) findViewById(R.id.textView_director);
filmYearView = (EditText) findViewById(R.id.textView_year);
//retrieves object from intent sent through from previous activity
//assigns variables
Intent intObj = getIntent();
filmTitle = (String) intObj
.getSerializableExtra("title");
filmDirector = (String) intObj
.getSerializableExtra("director");
filmYear = (String) intObj
.getSerializableExtra("year");
filmID = (Integer) intObj
.getSerializableExtra("id");
//Greeting message text set
filmTitleView.setText(filmTitle);
filmDirectorView.setText(filmDirector);
filmYearView.setText(filmYear);
System.getProperty("line.separator");
final Film f1 = (Film)(getListAdapter()).getItem(filmID);
updateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getActivity(),MainActivity.class);
Context context = getActivity();
FilmStoreOpenHelper helper = new FilmStoreOpenHelper(context);
SQLiteDatabase db = helper.getWritableDatabase();
FilmDAO dao = SQLiteFilmDAO.getInstance(db);
FilmStore fs1 = FilmStore.getInstance(context);
fs1.addFilm(f1);
boolean updated = dao.update(f1);
if (deleted){
Toast.makeText(getActivity(), ("Film " + f1.getTitle() + " Updated"), Toast.LENGTH_LONG).show();
db.close();
startActivity(i);
}else{
Toast.makeText(getActivity(), "Not Updated, try again", Toast.LENGTH_LONG).show();
}
}
});
}
答案 0 :(得分:0)
将getActivity()
的所有来电替换为this
。 FragmentActivity
是支持包中的特殊Activity
,旨在与Fragments一起使用。如果您的开发速度高于API 11,则可以使用常规Activity
。