Android 试图从碎片活动启动意图

Android 试图从碎片活动启动意图,android,android-intent,android-fragmentactivity,Android,Android Intent,Android Fragmentactivity,我有一个android应用程序,其中一个列表视图显示一些项目-“电影”,当你点击一个项目时,它会给你删除或更新项目的选项。“删除”功能正常,当您单击“更新”时,它会打开一个新片段,并在编辑文本框中正确填充影片的详细信息。我正试图找出如何让这个新片段上的更新按钮工作 首先,我让它扩展FragmentActivity,那么这是一个活动,还是一个片段?我应该用别的东西吗?当我像在上一个“ListFragment”中那样在click listener上添加按钮时,它不允许我调用“getActivity(

我有一个android应用程序,其中一个列表视图显示一些项目-“电影”,当你点击一个项目时,它会给你删除或更新项目的选项。“删除”功能正常,当您单击“更新”时,它会打开一个新片段,并在编辑文本框中正确填充影片的详细信息。我正试图找出如何让这个新片段上的更新按钮工作

首先,我让它扩展FragmentActivity,那么这是一个活动,还是一个片段?我应该用别的东西吗?当我像在上一个“ListFragment”中那样在click listener上添加按钮时,它不允许我调用“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();
            }
        }
    });
}   

将对
getActivity()
的所有调用替换为
this
FragmentActivity
是支持包中的一种特殊
活动
,设计用于片段。如果您开发的是高于API 11的应用程序,则可以使用常规的
活动