Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

I have built a delete button in Android, just like in Windows, which removes the string on the right hand side of the cursor (one by one). (Instead of the mainstream Backspace which removes the left side.)

Tell me if you have any better ideas.

package com.example.app;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView.BufferType;
import android.widget.Toast;

public class MainActivity extends Activity {
    public Toast t, t1,t2;
    Editable a, b, d, f, a1;
    String e;
    public int c, d1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText ed;

        Button dlt;

        dlt = (Button) findViewById(R.id.button1);

        ed = (EditText) findViewById(R.id.editText1);
        ed.clearFocus();

        dlt.setOnClickListener(new OnClickListener() {
            @SuppressLint("NewApi")
            public void onClick(View v) {

                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                boolean check = mgr.isActive(ed);
                if(check==true){

                    Toast.makeText(getApplicationContext(), "Welcome", t2.LENGTH_SHORT)
                    .show();
                }
                a = ed.getEditableText();

                b = a;
                c = ed.getSelectionStart();

                String a11 = b.toString().substring(c);
                Toast.makeText(getApplicationContext(), a11, t1.LENGTH_SHORT)
                        .show();
                String a22 = b.toString().substring(0, c);

                boolean daj = b.toString().isEmpty();
                if (a11 != null && !a11.trim().equals("")) {

                    int strChar = a11.length();
                    String strcut = a11.substring(1, strChar);
                    e = a22.concat(strcut);

                    ed.setText(e, BufferType.EDITABLE);
                    b = ed.getEditableText();
                    ed.setSelection(c);
                } else {
                    Toast.makeText(getApplicationContext(), "Cool",
                            t.LENGTH_SHORT).show();
                }

            }

        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
share|improve this question

1 Answer 1

up vote 6 down vote accepted
  1. Name your variables and fields meaningfully. I have no idea what a,b,e, etc are.

  2. Don't split your variable declaration and initalization. Instead of

    final EditText ed;
    
    Button dlt;
    
    dlt = (Button) findViewById(R.id.button1);
    
    ed = (EditText) findViewById(R.id.editText1);
    

    do

    final EditText ed = (EditText) findViewById(R.id.editText1);    
    final Button dlt = (Button) findViewById(R.id.button1);
    

    And be consistent with your final usage. Either use it everywhere where appropriate or don't. Otherwise I start to wonder why ed is final and dlt is not.

  3. There a TextUtils.isEmpty() method available on Android. Use it instead of

    a11 != null && !a11.trim().equals("")
    
  4. Use static field access. Instead of t1.LENGTH_SHORT use Toast.LENGTH_SHORT. All the fields t,t1 and t2 are unnecessary.

  5. All your fields should be local variables.

share|improve this answer
    
Thanks for your response. I'll surely keep your suggestions i mind the next time I write a code snippet. –  Abhi Jun 7 '14 at 10:39

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.