android - एंड्रॉइड समतुल्य getActivity() से/में ActionBarActivity




android-activity android-asynctask (2)

Nameofactivity कोशिश करो.इसके बजाय getActivity()

मैं हमेशा getActivity() गतिविधियों में getActivity() उपयोग करता getActivity() और यह किसी भी अन्य प्रकार की Activity

मेरे शीर्षक की तरह, मैं अपने Android project में मेरी getActivity() वर्ग में getActivity() बराबर की getActivity() हूं।

मैं AsyncTask घोषणा ऑब्जेक्ट में एक Activity पैरामीटर पास करना चाहता हूं, क्योंकि मैं अपने कस्टम AsyncTask विस्तारित वर्ग में एक Activity ऑब्जेक्ट का उपयोग कर रहा हूं

यहां मेरा प्रोजेक्ट का उदाहरण सबसे सरल कोड है

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() ActionBarActivity वर्ग से उपयोग करते हैं, लेकिन यह एक रिक्त वस्तु वापस करता है तो ActionBarActivity वर्ग में गतिविधि ऑब्जेक्ट कैसे प्राप्त करना चाहते हैं?


ओह लानत ! मुझे सिर्फ पूछने के बाद ही एक समाधान मिला।

मैं MyClass.this का उपयोग करते हैं, और यह किया है। इस कदर :

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

आशा है कि किसी को मदद कर सकता है!







android-actionbaractivity