Android等效于/在ActionBarActivity中的getActivity()

时间:2015-05-28 02:36:36

标签: android android-activity android-asynctask android-actionbaractivity

就像我的标题所说,我正在getActivity()的{​​{1}}课程中寻找相当于ActionBarActivity的内容。

我想在Android project声明对象中传递Activity参数,因为我在自定义AsyncTask扩展类中使用了Activity对象

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

AsyncTask

有一次,我想从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(); } } }; } 类中使用getParent(),但它返回一个null对象。 那么如何在ActionBarActivity类中获取我想要的Activity对象?

3 个答案:

答案 0 :(得分:12)

尝试使用nameofactivity.this而不是value="1"

我总是在SelectedPrefix = 1;活动中使用getActivity(),而在任何其他类型的getActivity()中使用。{/ p>

答案 1 :(得分:4)

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

我使用 MyClass.this ,就完成了。像这样:

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

希望能帮助别人!

答案 2 :(得分:0)

最简单的方法是活动变量

// in your fragment
Activity myActivity;

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

现在你的活动实例(父亲)可以在任何地方出现