تعطل التطبيق عند إضافة عرض للتخطيط عند استخدام إنت إد الروبوت سك

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

  •  02-01-2020
  •  | 
  •  

سؤال

في الأساس ، فإن نقطة الكود هي تفسير سلسلة بطريقة يتم فيها وضع العرض الذي يتم إنشاؤه في العرض السابق المذكور.

% $- background:#000000 % 
Hello, World.
% $- background:#ffffff %
$+ id:test type:container %
Test

هنا هو رمز لذلك.

new Thread() {
        StringBuilder text = new StringBuilder();
        @Override
        public void run() {
            try

            {
                String str = "";
                URL url = new URL("http://example.com/" + mes + "/" + mes + ".meb");
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

                while ((str = in.readLine()) != null) {
                    text.append(str);
                }
                in.close();
            } catch (MalformedURLException e1)

            {
            }
            catch (IOException e)
            {
            }
            if(message.contains(".meb")) {
                String strn = text.toString().replace("\n", "").replace("\r", "");
                String str[] = strn.toString().split("%");
                int relative2 = 0;
                final int relative = relative2;
                for (final String l : str) {
                    String code[] = l.split(" ");
                    if (l.toString().contains("$-")) {
                        for(String p : code)
                        {
                            if(p.toString().contains("background"))
                            {
                                final String set[] = p.toString().split(":");
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                (findViewById(R.id.body)).setBackgroundColor(Color.parseColor(set[1]));
                                    }
                                });
                            }
                        }
                    }
                    else if(l.toString().contains("$+"))
                    {
                        String[] g = code[2].split(":");
                        String[] c = code[3].split(":");
                        final String[] test = {g[1], "100"};
                        globvar.add(test);
                        if(c[1].toString().equals("container")) {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    final LinearLayout element = new LinearLayout(getApplicationContext());
                                    element.setBackgroundColor(Color.parseColor("#FFFFFF"));
                                    element.setMinimumHeight(50);
                                    element.setId(Integer.parseInt(test[1]));
                                    ((LinearLayout) findViewById(relative)).addView(element);
                                }
                            });
                            relative2 = Integer.parseInt(test[1]);
                        }
                    }
                    else                        {

                        if(!l.toString().isEmpty()) {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    final TextView tv = new TextView(getApplicationContext());
                                    tv.setTextColor(Color.parseColor("#000000"));
                                    tv.setTextSize(18);
                                    tv.setText(l);
                                    ((LinearLayout) findViewById(relative)).addView(tv);
                                }
                            });
                        }
                    }
                }
            }
            else {
                if(message == null) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                        }
                    });
                }
            }
        }
    }.start();

عندما يتعطل التطبيق ، أحصل على خطأ لوغكات التالي:

08-01 19:44:27.149 29893 29893 E AndroidRuntime: FATAL EXCEPTION: main

08-01 19:44:27.149 29893 29893 E AndroidRuntime: java.lang.NullPointerException

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at example.yemeb.List$1$3.run(List.java:116)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at android.os.Handler.handleCallback(Handler.java:615)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:92)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:137)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:4931)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at java.lang.reflect.Method.invokeNative(Native Method)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Method.java:511)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)

08-01 19:44:27.149 29893 29893 E AndroidRuntime:    at dalvik.system.NativeStart.main(Native Method)

يوضح هذا السجل أن الخطأ يحدث في ((لينيرلايوت) فيندفيوبيد (نسبي)).أدفيو (تلفزيون);في السطر 116.

ما هي المشكلة مع قانون بلدي?

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

المحلول

بسبب التعليمات البرمجية التالية,

int relative2 = 0;
final int relative = relative2;

قيمة النسبية هي 0 وهي نهائية ولا يمكن تغييرها.لذلك عندما تؤدي ((LinearLayout) findViewById(relative)), ، يصبح مثل ((LinearLayout) findViewById(0)).نظرا لعدم وجود عرض مرتبط بالمعرف 0 ، فلن تحصل على المرجع إلى هذا العرض ، وبالتالي تكون القيمة فارغة.وعند محاولة إضافة طريقة عرض لذلك ، يمكنك الحصول على استثناء نولبوانتر.

قراءة فيندفيوبيد() من عند docs.It يقول ذلك

يجد طريقة عرض تم تحديدها بواسطة سمة المعرف من شمل ذلك تمت معالجتها في أونكريتي (حزمة).

إرجاع طريقة العرض إذا وجدت أو لاغية خلاف ذلك.

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

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