Проблема, сделав peticiónFocus в EditText

У меня есть проблема, чтобы просить один focus сделав что-то в моей активности, но я не уверен, где я не удаюсь.

Я оставляю им мой код

   <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativelayoutcarga_manual_activity"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ScrollView
        android:id="@+id/scrollview_cargamanual_activity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusable="true"
        android:focusableInTouchMode="true" >

        <RelativeLayout
            android:id="@+id/act_carga_manual_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:focusableInTouchMode="true" >

            <LinearLayout
                android:id="@+id/linear_carga_manual_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="23dp" >

                <TextView
                    android:id="@+id/title_article_carga_manual"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="#70273D"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="Artículo: " />

                <EditText
                    android:id="@+id/edit_article_traspaso_manual"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:inputType="number"
                    android:focusable="true"
                    android:focusableInTouchMode="true"
                    android:hint="Artículo" />

                <ImageView
                    android:id="@+id/searchbuttontoactivity"
                    android:layout_width="20dp"
                    android:layout_marginLeft="30dp"
                    android:layout_height="20dp"
                    android:src="@drawable/search"/>
            </LinearLayout>
            <LinearLayout
                android:id="@+id/linear_carga_manual_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_below="@+id/linear_carga_manual_1" >

                <TextView
                    android:id="@+id/title_cantidad_carga_manual"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="#70273D"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="Cantidad: " />
                <TextView
                    android:id="@+id/title_cantidad_cajas_carga_manual"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"

                    android:layout_marginLeft="30dp"
                    android:text="Cajas: " />
                <EditText
                    android:id="@+id/edit_cantidad_cajas_traspaso_manual"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:inputType="numberSigned|number|numberDecimal"
                    android:ems="3"
                    android:maxLength="6"
                    android:selectAllOnFocus="true"
                    android:hint="0" />
            </LinearLayout>

             <LinearLayout
                 android:id="@+id/linear_carga_manual_3"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignRight="@+id/linear_carga_manual_2"
                 android:layout_below="@+id/linear_carga_manual_2" >

                 <TextView
                     android:id="@+id/title_cantidad_unidades_carga_manual"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="30dp"
                     android:text="Unidades: " />

                 <EditText
                     android:id="@+id/edit_cantidad_unidades_traspaso_manual"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:ems="3"
                     android:selectAllOnFocus="true"
                     android:hint="0"
                     android:inputType="numberSigned|number|numberDecimal" >

                 </EditText>
             </LinearLayout>

             <LinearLayout
                 android:id="@+id/linear_carga_manual_3_5"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignRight="@+id/linear_carga_manual_3"
                 android:layout_below="@+id/linear_carga_manual_3"
                 android:visibility="gone" >

                 <TextView
                     android:id="@+id/title_unidadescaja_carga_manual"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="30dp"
                     android:text="UnidadesCaja: " />

                 <EditText
                     android:id="@+id/edit_unidadescaja_traspaso_manual"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:ems="3"
                     android:selectAllOnFocus="true"
                     android:hint="0"
                     android:inputType="numberSigned|number" >
                     <requestFocus />
                 </EditText>
             </LinearLayout>

             <LinearLayout
                 android:id="@+id/linear_carga_manual_4"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_centerHorizontal="true"
                 android:layout_below="@+id/linear_carga_manual_3_5"
                 android:layout_marginTop="20dp" >

                 <TextView
                     android:id="@+id/title_trobat_article_traspas_manuall"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="-"
                     android:textColor="#70273D" />

             </LinearLayout>

             <LinearLayout
                android:id="@+id/linear_carga_manual_4_5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/linear_carga_manual_4"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="10dp" >

                <TextView
                    android:id="@+id/title_trobat_article_stock_manual_carga"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="-"
                    android:textColor="#999999" />
            </LinearLayout>

             <LinearLayout
                 android:id="@+id/linear_carga_manual_5"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_below="@+id/linear_carga_manual_4_5"
                 android:layout_centerHorizontal="true"
                 android:layout_marginTop="91dp" >

                 <Button
                     android:id="@+id/boton_traspaso_manual"
                     style="@style/Botones"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="ACEPTAR" />
                 <Button
                     android:id="@+id/boton_traspaso_manual_cancelar"
                     style="@style/Botones"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="CANCELAR" />
             </LinearLayout>

             <LinearLayout
                 android:id="@+id/linear_carga_manual_6"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_below="@+id/linear_carga_manual_5"
                 android:layout_centerHorizontal="true"
                 android:layout_marginTop="30dp" >

                 <Button
                     android:id="@+id/boton_carga_manual_ver_carga"
                     style="@style/Botones"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="VER TRASPASO" />
             </LinearLayout>
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

Мой Activity

public class InventariManualProveedorAlmacenActivity extends Activity {


    private EditText article_edittext, cajas_edittext, unidades_edittext;
    private boolean accesodesdeboton = false;
    private ArticlesAlmacen article = null;
    private Button aceptar,cancelar, ver_traspaso;
    private RelativeLayout screenlayout;
    private TextView nomarticle;
    private boolean añadir = false;
    private String codiproveedor;
    int sizeorigi = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.traspaso_manual);
        DBalmacen = new ObrirBDAlmacen(getApplicationContext());
        article_edittext = (EditText)findViewById(R.id.edit_article_traspaso_manual);
        cajas_edittext = (EditText)findViewById(R.id.edit_cantidad_cajas_traspaso_manual);
        unidades_edittext = (EditText)findViewById(R.id.edit_cantidad_unidades_traspaso_manual);
        nomarticle = (TextView)findViewById(R.id.title_trobat_article_traspas_manuall);
        aceptar = (Button)findViewById(R.id.boton_traspaso_manual);
        cancelar = (Button)findViewById(R.id.boton_traspaso_manual_cancelar);
        ver_traspaso = (Button)findViewById(R.id.boton_carga_manual_ver_carga);
        screenlayout = (RelativeLayout)findViewById(R.id.act_carga_manual_layout);
        listaarticles = Globals.getInstance().getLlistaArticlesPerTraspaso();
        sizeorigi = listaarticles.size();
        accesodesdeboton = Globals.getInstance().getAccesoDesdeBoton();
        codiproveedor = Globals.getInstance().getCodiProveidor();
        if (accesodesdeboton == true){
            article_edittext.requestFocus();
        }
        else{
            Toast.makeText(getApplicationContext(), "Acceso Desde Lista", Toast.LENGTH_SHORT).show();
        }
        article_edittext.setOnFocusChangeListener(new OnFocusChangeListener(){
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (article_edittext.equals("")){
                    article_edittext.requestFocus();
                }
                else{
                    for (ArticlesAlmacen arti : listaarticles){
                        if (article_edittext.getText().toString().equals(arti.codiarticle) || article_edittext.getText().toString().equals(arti.ean13)){
                            nomarticle.setText(arti.codiarticle + " - " + arti.nom);
                            article = new ArticlesAlmacen();
                            article.codiarticle = arti.codiarticle;
                            article.unidadescaja = arti.unidadescaja;
                            article_edittext.setText(""+article.codiarticle);
                            break;
                        }
                        else{

                        }
                    }
                    if (article == null){
                        DBalmacen.open();
                        String codiarticlecodisbarres = DBalmacen.getArticleCodiBarresProveidor(article_edittext.getText().toString(), codiproveedor);
                        double unidadescajacodibarres = DBalmacen.getUnidadesCajaCodiBarres(article_edittext.getText().toString());
                        DBalmacen.close();
                        if (codiarticlecodisbarres == null){

                        }
                        else{
                            DBalmacen.open();
                            article = DBalmacen.getArticle(codiarticlecodisbarres);
                            nomarticle.setText(article.codiarticle + " - " + article.nom);
                            article_edittext.setText(""+article.codiarticle);
                            DBalmacen.close();
                            if (unidadescajacodibarres != 0){
                                article.unidadescaja = unidadescajacodibarres;
                            }
                        }
                    }
                }
            }
        });
        cajas_edittext.setOnKeyListener(new OnKeyListener(){

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
                if (keyCode == 137 || keyCode == 141){ //KEY DE CODI DE BARRES
                    try{
                        cajas_edittext.addTextChangedListener(new TextWatcher(){

                            @Override
                            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                                // TODO Auto-generated method stub

                            }

                            @Override
                            public void onTextChanged(CharSequence s, int start, int before, int count) {
                                // TODO Auto-generated method stub

                            }

                            @Override
                            public void afterTextChanged(Editable s) {
                                // TODO Auto-generated method stub
                                if (s.length()>4){
                                    cajas_edittext.setText("");
                                }

                            }

                        });
                    } catch(Exception e){
                        e.printStackTrace();
                        //Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
                    }
                }
                return false;
            }

        });
        unidades_edittext.setOnKeyListener(new OnKeyListener(){

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
                if (keyCode == 137 || keyCode == 141){ //KEY DE CODI DE BARRES
                    try{
                        unidades_edittext.addTextChangedListener(new TextWatcher(){

                            @Override
                            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                                // TODO Auto-generated method stub

                            }

                            @Override
                            public void onTextChanged(CharSequence s, int start, int before, int count) {
                                // TODO Auto-generated method stub

                            }

                            @Override
                            public void afterTextChanged(Editable s) {
                                // TODO Auto-generated method stub
                                if (s.length()>4){
                                    unidades_edittext.setText("");
                                }

                            }

                        });
                    } catch(Exception e){
                        e.printStackTrace();
                        //Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
                    }
                }
                if (keyCode == KeyEvent.KEYCODE_ENTER){
                    aceptar.performClick();

                }
                return false;
            }

        });

        aceptar.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                añadir = false;
                if (article != null){
                    if (cajas_edittext.getText().toString().length() == 0){
                        article.unipre = 0;
                    }
                    else{
                        article.unipre = Double.valueOf(cajas_edittext.getText().toString());
                    }
                    if (unidades_edittext.getText().toString().length() == 0){
                        article.unidad = 0;
                    }
                    else{
                        article.unidad = Double.valueOf(unidades_edittext.getText().toString());
                    }
                    for (ArticlesAlmacen arti : listaarticles){
                        if ((arti.codiarticle.equals(article.codiarticle)) && (arti.unidadescaja == article.unidadescaja)){
                            /*arti.unipre += article.unipre;
                            arti.unidad += article.unidad;*/

                            arti.unitatstotals += ((article.unipre*article.unidadescaja) + article.unidad);
                            arti.unipre = (int) (arti.unitatstotals / arti.unidadescaja);
                            arti.unidad = (int) (arti.unitatstotals % arti.unidadescaja);
                            añadir = true;

                        }
                    }
                    if (añadir == false && article != null){
                        //DIFERENTES UNITATS CAIXA
                        Log.e("Entro: " + article.unidadescaja, "Entro");
                        DBalmacen.open();
                        for (ArticlesAlmacen arti : listaarticles){
                            if ((arti.codiarticle.equals(article.codiarticle)) && (arti.unidadescaja != article.unidadescaja)){ 
                                /*arti.unipre += article.unipre;
                                arti.unidad += article.unidad;*/
                                double unidadescaja = DBalmacen.getUnidadesCajaArticle(article.codiarticle);
                                arti.unitatstotals += ((article.unipre*article.unidadescaja) + article.unidad);
                                arti.unipre = (int) (arti.unitatstotals /unidadescaja);
                                arti.unidad = (int) (arti.unitatstotals % unidadescaja);
                            }
                        }
                        DBalmacen.close();
                        //listaarticles.add(article);
                    }
                    for (ArticlesAlmacen arti : listaarticles){
                        Toast.makeText(getApplicationContext(), "" + arti.unitatstotals, Toast.LENGTH_SHORT).show();
                    }
                }
                if (accesodesdeboton == true){
                    article = null;
                    article_edittext.setText("");
                    cajas_edittext.setText("");
                    unidades_edittext.setText("");
                    nomarticle.setText("-");
                    article_edittext.requestFocus();
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
                }
                añadir = false;
                Globals.getInstance().setTraspasoImprimido(0);
                article_edittext.requestFocus();
            }
        });
        cancelar.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                añadir = false;
                article = null;
                article_edittext.setText("");
                cajas_edittext.setText("");
                unidades_edittext.setText("");
                nomarticle.setText("-");
                article_edittext.requestFocus();
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
            }
        });
        /*ver_traspaso.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                ArrayList<ArticlesAlmacen> listavertraspaso = new ArrayList<ArticlesAlmacen>();
                for (ArticlesAlmacen arti : copialistaarticles){
                    if (arti.unidad > 0 || arti.unipre > 0){
                        listavertraspaso.add(arti);
                    }
                }
                Globals.getInstance().setLlistaArticlesPerTraspaso(listavertraspaso);
                if (listavertraspaso.size()>0){
                    Intent i = new Intent(InventariManualAlmacenActivity.this, VerTraspasoActivity.class);
                    startActivity(i);
                    overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
                }
                else{
                    Toast.makeText(getApplicationContext(), "No se encontraron lineas", Toast.LENGTH_SHORT).show();
                }

            }

        });*/
    }
    public void onBackPressed() {
        // TODO Auto-generated method stub

        if (sizeorigi == listaarticles.size()){
            Intent returnIntent = new Intent();
            Toast.makeText(getApplicationContext(), "IGUAL SIZE", Toast.LENGTH_SHORT).show();
            setResult(Activity.RESULT_CANCELED, returnIntent);
            finish();
        }
        else{
            Intent returnIntent = new Intent();
            Globals.getInstance().setLlistaArticlesResult(listaarticles);
            //Toast.makeText(getApplicationContext(), "DIFERENTE SIZE", Toast.LENGTH_SHORT).show();
            setResult(Activity.RESULT_OK,returnIntent);
            finish();
        }
        overridePendingTransition(R.anim.slide_out2,R.anim.slide_in2);
    }

}

Идея, - когда я нажимаю на кнопку Aceptar, я хочу, что artículo_edittext получите фокус (или когда я это делаю aceptar.performClick ()), но всегда я получаю фокус в cajas_edittext, добавив статью.

Кто-то может помогать мне пожалуйста? Я попробовал много вещей, но потерян полностью в этом.

2
задан 25.01.2017, 19:04
0 ответов

Помести ему твой EditText в того, который делается focus focusable в false:

 <EditText
 android:id="@+id/edit_cantidad_cajas_traspaso_manual"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:inputType="numberSigned|number|numberDecimal"
 android:ems="3"
 android:maxLength="6"
 android:focusable="false" ◄ aquí
 android:selectAllOnFocus="true"
 android:hint="0" />
2
ответ дан 03.12.2019, 17:30

То, что осуществляется, состоит в том, чтобы требовать подхода в желанном виде, этом после действия click посредством метода requestFocus ():

artículo_edittext.requestFocus() 

в каких-то случаях handler требуется для того, чтобы оно функционировало правильно.

 mHandler.post(
       new Runnable() 
       {
          public void run() 
          {
            artículo_edittext.requestFocus() 
          } 
       }
     );

я не рекомендую выводить из строя позволять фокус в других EditText как cajas_edittext так как он конечно потребует в каком-то моменте подхода, уверен ли ты не требования никогда в подход в этом виде, просто выведи это свойство из строя посредством android:focusable="false".

       <EditText
            android:id="@+id/edit_cantidad_cajas_traspaso_manual"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="numberSigned|number|numberDecimal"
            android:ems="3"
            android:maxLength="6"
            android:selectAllOnFocus="true"
            android:focusable="false"
            android:hint="0" />
0
ответ дан 03.12.2019, 17:30

Теги

Похожие вопросы