Android 相当于 getActivity() from/in ActionBarActivity

Android equivalent of getActivity() from/in ActionBarActivity

正如我的标题所说,我正在寻找 ActionBarActivity class Android project.

中的 getActivity() 的等价物

我想在 AsyncTask 声明 object 中传递一个 Activity 参数,因为我在自定义 [=] 中使用 Activity object 17=] 扩展 class

这是我项目的最简单代码示例

public class EventCreator extends ActionBarActivity {

private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_even_creator);
    View v = getLayoutInflater().inflate(R.layout.activity_even_creator,null);
    this.context = this.getBaseContext();

    final Button createButton = (Button)findViewById(R.id.createEventButton);
    createButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AsyncTask<Void,Void,Boolean> eventCreatorSend = new SendEvents(/* here need activity object */);
            eventCreatorSend.execute();
        }
    });

}

    class SendEvents extends AsyncTask<Void,Void,Boolean> {

        public Activity act;

        SendEvents(Activity a) {
            this.act = a;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            ((LinearLayout)act.findViewById(R.id.layout_loader_create_event)).setVisibility(View.VISIBLE);
        }

        @Override
        protected Boolean doInBackground(Void... params) {

            SystemClock.sleep(5000);
            return true;
        }

        @Override
        protected void onPostExecute(Boolean params) {
            if (params){

                ((LinearLayout)act.findViewById(R.id.layout_loader_create_event)).setVisibility(View.GONE);
                act.finish();
            }
            else {
                ((LinearLayout)act.findViewById(R.id.layout_loader_create_event)).setVisibility(View.VISIBLE);
                Toast.makeText(act,"Fail to send event",Toast.LENGTH_SHORT).show();
            }
        }


    };
}

有一段时间,我想使用 ActionBarActivity class 中的 getParent(),但它 return 是空值 object。 那么如何在ActionBarActivityclass中得到我想要的Activityobject?

尝试 nameofactivity.this 而不是 getActivity()

我总是在 Fragments 活动中使用 getActivity(),在任何其他类型的 Activity 中使用 .this。

该死! 我刚刚在发布我的问题后找到了解决方案。

我用MyClass.this,搞定了。像这样:

    AsyncTask<Void,Void,Boolean> eventCreatorSend = new SendEvents(EventCreator.this);
    eventCreatorSend.execute();

希望能帮到别人!

最简单的方法是 Activity 变量

// in your fragment
Activity myActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    //fragment shouts "i know my father!!!"
    myActivity = activity; //
}

现在您的 activity 实例(父亲)可以在任何地方表示