Android كيفية قراءة أصل من خارج النشاط الرئيسي

StackOverflow https://stackoverflow.com/questions/4126387

  •  29-09-2019
  •  | 
  •  

سؤال

يجب أن أكون قادرًا على الاتصال بـ READASSET من خارج النشاط الرئيسي لتطبيقي. لقد سمعت أن الناس يذكرون الحاجة إلى تمرير السياق ، لكن اللغة كانت غامضة للغاية. هل يمكن لأي شخص أن يصف الخطوات اللازمة لإضافة القدرة على استدعاء READASSET إلى فئة موجودة ليست النشاط الرئيسي؟ إن إنشاء وظيفة عامة في النشاط الرئيسي واتصال الآخرين لن يعمل كمكان أحتاج إلى إضافة ReadAsset إليه ، في سلسلة رسائل منفصلة.

هل كانت مفيدة؟

المحلول

public class NonActivity {
    public void doStuff(Context c) {
        //read from assets
        c.getAssets();
        //use assets however
    }
}

لست متأكدًا مما تطلبه ، ولكن ربما شيء من هذا القبيل؟ فقط أضف إلى الفئة الحالية ، واستخدم السياق لاسترداد الأصول. في نشاطك ، اتصل بالطريقة مثل هذه:

public class MyActivity extends Activity {
  public void OnCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    NonActivity n = new NonActivity();
    n.doStuff(this);
  }
}

نصائح أخرى

ملاحظة يجب أن يتم إدخال جميع إمكانية الوصول إلى نظام الملفات الرئيسية ، لذلك يجب ألا تقرأها أثناء onCreate (). بدلاً من ذلك ، يجب عليك استخدام موضوع آخر ، كما هو موضح بواسطة Aysnctask.

لقراءة الأصول ، تحتاج Context, ، لكنك لا يجب أن تستخدم Activity مثلك Context; ؛ يمكنك استخدام ال Application كائن بدلاً من ذلك.

سياق Android دون أن يكون في نشاط؟ وغيرها من البرمجة أقل نشاط؟

public class MyApplication extends Application {
    private static MyApplication instance;

    public MyApplication() {
        instance = this;
    }

    public static MyApplication getInstance() {
         return instance;
    }
}

ستحتاج إلى إضافة ملف android:name تنسب إلى <application> عنصر في AndroidManifest.xml أول:

 <application android:name="com.example.MyApplication" ... />

الآن يمكنك الاتصال MyApplication.getInstance().getAssets() ثابتة من أي مكان.

بالتناوب ، يمكنك استخدام خنجر حقن التبعية لحقن Application مباشرة في كائنك. (حقن Application السياق صعب بعض الشيء. نرى الخنجر 2 حقن سياق Android و هذه القضية مقدمة على الخطر Github repo.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top