سؤال

وأنا أتساءل عما إذا كان شخص ما يمكن أن تساعدني. أحاول لعرض عنصر نخب عند تلقي SMS. يجب أن يحتوي هذا نخب تخطيط الذي لديه صورة (SMS أيقونة) و 2 textviews (المرسل، الرسالة)

إذا كنت استدعاء الأسلوب التالي من النشاط، وأنها تعمل كما هو متوقع ...

public void showToast(Context context, String name, String message) {
    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.toast_sms,
                                   (ViewGroup) findViewById(R.id.toast_sms_root));

    TextView text = (TextView) layout.findViewById(R.id.toastsms_text);
    text.setText(message);

    Toast toast = new Toast(getApplicationContext());
    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.setView(layout);
    toast.show();
}

ولكن، إذا كنت محاولة استدعاء نفس الرمز بنفس الطريقة من وجهة نظري SMSReceiver، وأحصل على:

The method getLayoutInflater() is undefined for the type SmsReceiver
The method findViewById(int) is undefined for the type SmsReceiver
The method getApplicationContext() is undefined for the type SmsReceiver

ويمكن للشخص يرجى تقديم المشورة كيف يمكنني القيام به tihs من وجود نية. وأفترض أن المسألة ذات الصلة على نحو ما عبر خيوط ومع ذلك، أنا غير متأكد كيفية المضي قدما. لقد رأيت بضعة أمثلة على الانترنت ولكن يبدو أنها إما استخدام إهمال أو رمز فقط عرض النص البسيط

ويمكن للشخص يرجى لي نقطة في الاتجاه الصحيح

وشكرا جزيلا

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

المحلول

ويمكنك استخدام LayoutInflater.from (السياق) للحصول على LayoutInflater الخاص بك. مثل هذا:

LayoutInflater mInflater = LayoutInflater.from(context);
View myView = mInflater.inflate(R.layout.customToast, null);
TextView sender = (TextView) myView.findViewById(R.id.sender);
TextView message = (TextView) myView.findViewById(R.id.message);

نصائح أخرى

وأخطاء الترجمة الخاصة بك هي لBroadcastReceiver لا يرث من Context. استخدام Context التي يتم تمريرها إلى onReceive() (والتخلص من getApplicationContext() - مجرد استخدام Context يتم تمرير لك).

والآن، وهذا قد <م> لا تزال لا تعمل، وأنا لست متأكدا إذا كنت تستطيع رفع Toast من BroadcastReceiver في المقام الأول، ولكن هذا على الأقل تحصل في الماضي أخطاء ترجمة.

ويمكن إنشاء نخب وعرضها من النشاط أو الخدمة، وليس بث استقبال

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