Fehler bei der Listenaktivität mit einem Gerät, auf dem Jelly Bean ausgeführt wird (SPAN_EXCLUSIVE_EXCLUSIVE-Bereiche dürfen keine Länge von Null haben)

Ich muss die App mit dem Begrüßungsbildschirm starten und dann Listenaktivitätszeilen öffnen. Wenn Sie auf eine Zeile klicken, wird eine Aktivität geöffnet, die eine Textansicht, zwei Schaltflächen (eine davon öffnet eine unendliche Galerie, die andere öffnet ein benutzerdefiniertes Dialogfeld) und Menüelemente (etwa, Einstellungen) enthält , Ausfahrt).

Diese App läuft perfekt auf Ingwerbrot, aber wenn sie auf einer Galaxy S3 mit Gummibärchen getestet wird, wird sie normal geöffnet, aber wenn Sie auf eine der Listenaktivitätszeilen klicken, scheint sie den Klick zu ignorieren. Die Logkatze auf Eclipse zeigt:

SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 

Es gibt jedoch keine erzwungene Schließung (die Listenaktivität wird normal gescrollt und die Menüoptionen funktionieren einwandfrei und).

AKTUALISIEREN:
Mir ist etwas aufgefallen bei dieser Anwendung: Ich habe sie mit Eclipse erstellt, seit ungefähr einem Monat.trip) und heute testen (trip.apk) auf Ingwerbrot und Gummibärchen funktioniert es perfekt.

Aber ich wollte den Namen von änderntrip zutravel und ich habe nicht verwendetRefactor. Stattdessen habe ich ein neues Projekt mit dem Anwendungsnamen erstellttravel aber alle anderen Dinge sind die gleichen wie in der vorherigen Apptrip einschließlich Klassen, res und wenn mit Gummibärchen getestet zeigt:

SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 

UPDATE 3:

ICH HABE DAS PROBLEM GELÖST :

Ich habe diese Zeile zu allen TextViews in meiner App hinzugefügt:

 android:textIsSelectable="true"

und diese Zeile führt zu Zeilen ignorieren den Klick,

Also habe ich es entfernt und jetzt funktionieren sowohl die alte als auch die neue App gut mit beiden APIs.

UPDATE 4:

Die oben genannten Ausdrücke beziehen sich auf ein altes Problem und sind bereits gelöst.

DIE FRAGE IST JETZT:

Meine Anwendung funktioniert perfekt mit allen APIs, aber wenn sie getestet wird mit:

Galaxie S3 läuft Gummibärchen perfekt auch,

aber in Eclipse Log Cat Show Fehler:

 SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero  length

ohne Beeinträchtigung der Anwendungsleistung, jede Idee, um diesen Fehler zu beheben.

Jede Erklärung wird sehr geschätzt, danke.

der Code meines Projekts:

Speisekarte :

public class Menu extends ListActivity {

    String classes[] = { "Introduction", "DreamsTrip", "Day one", "Day Two",
            "Day Three", "Day Four", "Day Five", "Conclusion" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        // create background for whole list as image
        ListView lv = getListView();
        lv.setCacheColorHint(0);
        lv.setSelector(android.R.color.transparent);
        lv.setPadding(30, 0, 30, 0);
        lv.setVerticalScrollBarEnabled(false);
        lv.setBackgroundResource(R.drawable.list_background);
        lv.setDivider(new ColorDrawable(0x00000000));
        setListAdapter(new MyArrayAdapter(this, classes));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        String cheese = classes[position];
        try {
            Intent ourIntent;
            if (position > 1 && position < 25) {
                Class ourClass = Class.forName("com.test.demo.MyDay");
                ourIntent = new Intent(Menu.this, ourClass);
                ourIntent.putExtra("cheese", cheese);
            } else {
                Class ourClass = Class.forName("com.test.demo." + cheese);
                ourIntent = new Intent(Menu.this, ourClass);
            }
            startActivity(ourIntent);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public boolean onCreateOptionsMenu(android.view.Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.cool_menu, menu);
        getLayoutInflater().setFactory(new Factory() {

            public View onCreateView(String name, Context context,
                    AttributeSet attrs) {
                if (name.equalsIgnoreCase(
                        "com.android.internal.view.menu.IconMenuItemView")) {
                    try {
                        LayoutInflater li = LayoutInflater.from(context);
                        final View view = li.createView(name, null, attrs);
                        new Handler().post(new Runnable() {

                            public void run() {
                                view.setBackgroundResource(R.drawable.border3);
                                ((TextView) view).setTextSize(25);
                                ((TextView) view).setTypeface(FontFactory
                                        .getBFantezy(getBaseContext()));
                                ((TextView) view).setTextColor(Color.RED);
                            }
                        });
                        return view;
                    } catch (InflateException e) {
                    } catch (ClassNotFoundException e) {
                    }
                }
                return null;
            }
        });
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.aboutUs:
            Intent i = new Intent("com.test.demo.ABOUT");
            startActivity(i);
            break;
        case R.id.preferences:
            Intent p = new Intent("com.test.demo.PREFS");
            startActivity(p);
            break;
        case R.id.exit:
            finish();
            break;
        }
        return false;
    }
}

MyArrayAdapter:

public class MyArrayAdapter extends ArrayAdapter<String> {

    private final Activity context;
    private final String[] classes;
    Typeface tf;

    static class ViewHolder {

        public TextView text;
        public ImageView image;
    }

    public MyArrayAdapter(Activity context, String[] classes) {
        super(context, R.layout.row, classes);
        this.context = context;
        this.classes = classes;
        tf = Typeface.createFromAsset(context.getAssets(), "BFantezy.ttf");
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View rowView = convertView;
        if (rowView == null) {
            LayoutInflater inflater = context.getLayoutInflater();
            rowView = inflater.inflate(R.layout.row, null);
            ViewHolder viewHolder = new ViewHolder();
            viewHolder.text = (TextView) rowView.findViewById(R.id.row_label);
            viewHolder.image = (ImageView) rowView.findViewById(R.id.row_image);
            viewHolder.text.setTypeface(FontFactory.getBFantezy(getContext()));
            rowView.setTag(viewHolder);
        }
        ViewHolder holder = (ViewHolder) rowView.getTag();
        String s = classes[position];
        holder.text.setText(s);
        if (s.equals("Day one")) {
            holder.image.setImageResource(R.drawable.day1);
        }
        if (s.equals("Day Two")) {
            holder.image.setImageResource(R.drawable.day2);
        }
        if (s.equals("Day Three")) {
            holder.image.setImageResource(R.drawable.day3);
        }
        if (s.equals("Day Four")) {
            holder.image.setImageResource(R.drawable.day4);
        }
        if (s.equals("Day Five")) {
            holder.image.setImageResource(R.drawable.day5);
        }
        if (s.equals("Conclusion")) {
            holder.image.setImageResource(R.drawable.day_concl);
        }
        if (s.equals("DreamsTrip")) {
            holder.image.setImageResource(R.drawable.day_trip);
        }
        if (s.equals("Introduction")) {
            holder.image.setImageResource(R.drawable.day_intr);
        }
        return rowView;
    }
}

Mein Tag:

public class MyDay extends Activity {

    final Context context = this;
    private Button button;
    TextView tv2, tv3, tv4;
    String day;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        Boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.day);
        if (customTitleSupported) {
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                    R.layout.custom_title);
        }
        initializeTextViews();
    }

    private void initializeTextViews() {
        tv2 = (TextView) findViewById(R.id.day_tv1);
        tv2.setTypeface(FontFactory.getBFantezy(getBaseContext()));
        tv3 = (TextView) findViewById(R.id.day_tv3);
        tv3.setTypeface(FontFactory.getDroidNaskh(getBaseContext()));
        day = getIntent().getStringExtra("cheese");
        if (day.equalsIgnoreCase("Day One")) {
            tv2.setText(Html.fromHtml(getString(R.string.beginning)));
            tv3.setText(Html.fromHtml(getString(R.string.day1)));
            button = (Button) findViewById(R.id.city_button);
            button.setOnClickListener(new OnClickListener() {

                public void onClick(View arg0) {
                    // custom dialog
                    final Dialog dialog = new Dialog(context,
                            R.style.cust_dialog);
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.custom_dialog);
                    // set the custom dialog components - text, image and button
                    TextView text = (TextView) dialog
                            .findViewById(R.id.dialog_text);
                    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));
                    text.setText(Html
                            .fromHtml(getString(R.string.torusim_places_1)));
                    Button dialogButton = (Button) dialog
                            .findViewById(R.id.dialog_Button);
                    dialogButton.setTypeface(FontFactory
                            .getBFantezy(getBaseContext()));
                    // if button is clicked, close the custom dialog
                    dialogButton.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                            dialog.dismiss();
                        }
                    });
                    dialog.show();
                }
            });
        } else if (day.equalsIgnoreCase("Day Two")) {
            tv2.setText(Html.fromHtml(getString(R.string.beginning)));
            tv3.setText(Html.fromHtml(getString(R.string.day2)));
            button = (Button) findViewById(R.id.city_button);
            button.setOnClickListener(new OnClickListener() {

                public void onClick(View arg0) {
                    // custom dialog
                    final Dialog dialog = new Dialog(context,
                            R.style.cust_dialog);
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.custom_dialog);
                    // set the custom dialog components - text, image and button
                    TextView text = (TextView) dialog
                            .findViewById(R.id.dialog_text);
                    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));
                    text.setText(Html
                            .fromHtml(getString(R.string.torusim_places_2)));
                    Button dialogButton = (Button) dialog
                            .findViewById(R.id.dialog_Button);
                    dialogButton.setTypeface(FontFactory
                            .getBFantezy(getBaseContext()));
                    // if button is clicked, close the custom dialog
                    dialogButton.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                            dialog.dismiss();
                        }
                    });
                    dialog.show();
                }
            });
        } else if (day.equalsIgnoreCase("Day Three")) {
            tv2.setText(Html.fromHtml(getString(R.string.beginning)));
            tv3.setText(Html.fromHtml(getString(R.string.day3)));
            button = (Button) findViewById(R.id.city_button);
            button.setOnClickListener(new OnClickListener() {

                public void onClick(View arg0) {
                    // custom dialog
                    final Dialog dialog = new Dialog(context,
                            R.style.cust_dialog);
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.custom_dialog);
                    // set the custom dialog components - text, image and button
                    TextView text = (TextView) dialog
                            .findViewById(R.id.dialog_text);
                    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));
                    text.setText(Html
                            .fromHtml(getString(R.string.torusim_places_3)));
                    Button dialogButton = (Button) dialog
                            .findViewById(R.id.dialog_Button);
                    dialogButton.setTypeface(FontFactory
                            .getBFantezy(getBaseContext()));
                    // if button is clicked, close the custom dialog
                    dialogButton.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                            dialog.dismiss();
                        }
                    });
                    dialog.show();
                }
            });
        } else if (day.equalsIgnoreCase("Day Four")) {
            tv2.setText(Html.fromHtml(getString(R.string.beginning)));
            tv3.setText(Html.fromHtml(getString(R.string.day4)));
            button = (Button) findViewById(R.id.city_button);
            button.setOnClickListener(new OnClickListener() {

                public void onClick(View arg0) {
                    // custom dialog
                    final Dialog dialog = new Dialog(context,
                            R.style.cust_dialog);
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.custom_dialog);
                    // set the custom dialog components - text, image and button
                    TextView text = (TextView) dialog
                            .findViewById(R.id.dialog_text);
                    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));
                    text.setText(Html
                            .fromHtml(getString(R.string.torusim_places_4)));
                    Button dialogButton = (Button) dialog
                            .findViewById(R.id.dialog_Button);
                    dialogButton.setTypeface(FontFactory
                            .getBFantezy(getBaseContext()));
                    // if button is clicked, close the custom dialog
                    dialogButton.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                            dialog.dismiss();
                        }
                    });
                    dialog.show();
                }
            });
        } else if (day.equalsIgnoreCase("Day Five")) {
            tv2.setText(Html.fromHtml(getString(R.string.beginning)));
            tv3.setText(Html.fromHtml(getString(R.string.day5)));
            button = (Button) findViewById(R.id.city_button);
            button.setOnClickListener(new OnClickListener() {

                public void onClick(View arg0) {
                    // custom dialog
                    final Dialog dialog = new Dialog(context,
                            R.style.cust_dialog);
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.custom_dialog); // set the
                    // custom dialog components - text, image and button
                    TextView text = (TextView) dialog
                            .findViewById(R.id.dialog_text);
                    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));
                    text.setText(Html
                            .fromHtml(getString(R.string.torusim_places_5)));
                    Button dialogButton = (Button) dialog
                            .findViewById(R.id.dialog_Button);
                    dialogButton.setTypeface(FontFactory
                            .getBFantezy(getBaseContext()));
                    // if button is clicked, close the custom dialog
                    dialogButton.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                            dialog.dismiss();
                        }
                    });
                    dialog.show();
                }
            });
        }
    }

    public void handleClick(View v) {
        // Create an intent to start the new activity.
        Intent intent = new Intent();
        intent.setClass(this, DayGallery.class);
        intent.putExtra("dayname", day);
        startActivity(intent);
    }
}

logcat:

D/AbsListView(14159): Get MotionRecognitionManager
D/dalvikvm(14159): GC_FOR_ALLOC freed 81K, 9% free 12164K/13315K, paused 13ms, total  
13ms
I/dalvikvm-heap(14159): Grow heap (frag case) to 14.306MB for 1555216-byte allocation
D/dalvikvm(14159): GC_CONCURRENT freed 2K, 8% free 13681K/14855K, paused 12ms+1ms, 
total 20ms
D/dalvikvm(14159): GC_FOR_ALLOC freed 0K, 8% free 13681K/14855K, paused 10ms, total 
10ms
I/dalvikvm-heap(14159): Grow heap (frag case) to 16.941MB for 2764816-byte allocation
D/dalvikvm(14159): GC_CONCURRENT freed 0K, 7% free 16381K/17607K, paused 12ms+2ms, 
total 23ms
D/libEGL(14159): loaded /system/lib/egl/libEGL_mali.so
D/libEGL(14159): loaded /system/lib/egl/libGLESv1_CM_mali.so
D/libEGL(14159): loaded /system/lib/egl/libGLESv2_mali.so
D/(14159): Device driver API match
D/(14159): Device driver API version: 10
D/(14159): User space API version: 10 
D/(14159): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012 
D/OpenGLRenderer(14159): Enabling debug mode 0
D/dalvikvm(14159): GC_FOR_ALLOC freed 1732K, 16% free 15672K/18439K, paused 19ms, 
total 19ms
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
D/dalvikvm(14159): GC_CONCURRENT freed 691K, 13% free 16102K/18439K, paused 13ms+2ms, 
total 27ms
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
W/OpenGLRenderer(14159): Shape round rect too large to be rendered into a texture 
(680x12472, max=4096x4096)
W/OpenGLRenderer(14159): Shape round rect too large to be rendered into a texture 
(688x12480, max=4096x4096)
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length
E/SpannableStringBuilder(14159): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero 
length

Antworten auf die Frage(3)

Ihre Antwort auf die Frage