与按钮android冲突

时间:2014-11-21 11:44:35

标签: java android button methods

我有2个xml文件," activity_main"和" main_screen",这里都有1个按钮,这里是按钮的xml:

登录按钮<此按钮位于我的应用程序的第一个屏幕上

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/entrar"
        android:id="@+id/button"
        android:onClick="onClick"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

&#34;保存数据按钮&#34; &LT;这个是在第二个屏幕上。

<Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Salvar"
            android:id="@+id/button2"
            android:onClick="onClick"
            android:layout_marginTop="43dp" />

第一个按钮的Java代码:

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Editable login = editLogin.getText();
                String loginTexto = login.toString();

                Editable pass = editPass.getText();
                String senhaTexto = pass.toString();

                try{
                    trocaTela();
                    System.out.println("botao login" + R.id.button);
                    //a.enviaDados(loginTexto, senhaTexto, textView);
                }catch(Exception e){
                    System.out.println(e.getMessage());
                }

            }
        });

第二个按钮的Java代码:

button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                final EditText editNome = (EditText) findViewById(R.id.nomeEdit);
                final EditText editDestino = (EditText) findViewById(R.id.destinoEdit);
                final EditText editKm = (EditText) findViewById(R.id.kmEdit);
                final TextView textView = (TextView) findViewById(R.id.textView);

                //pega o texto inserido no campo da placa
                Editable editable = editPlaca.getText();
                String placaTexto = editable.toString();

                //pega o nome inserido no campo do nome
                Editable nomeEditable = editNome.getText();
                String nomeTexto = nomeEditable.toString();

                //pega o destino inserido no campo do destino
                Editable destinoEditable = editDestino.getText();
                String destinoTexto = destinoEditable.toString();

                //pega o valor inserido no campo do km
                Editable kmEditable = editKm.getText();
                String kmTexto = kmEditable.toString();

                try {
                    ScreenFunctions f = new ScreenFunctions();
                    System.out.println("botao screen:" +  R.id.button2);
                    f.formatPost(nomeTexto, placaTexto, destinoTexto, kmTexto, textView);
                } catch (Exception e) {
                    System.out.println("Button press exception: " + e.getMessage());
                }
            }
        });

问题是......我无法理解我将如何对待&#34; onClick&#34;功能,因为&#34; onClick&#34;方法是抽象的,所以我不能改变它的名字,第二个按钮怎么可以使用MainScreen onClick而第一个按钮使用onA的MainActivity。

4 个答案:

答案 0 :(得分:0)

删除

android:onClick="onClick"

你不需要这个因为你在java代码中设置onclicklisteners

告诉我这是否有帮助的信息

修改

确保正确捕捉按钮变量:

 button = (Button) findViewById(R.id.button);
 button2 = (Button) findViewById(R.id.button2;

答案 1 :(得分:0)

更改功能名称:

android:onClick="onClick"

android:onClick="someMethod"

答案 2 :(得分:0)

删除android:onClick =&#34; onClick&#34;在你的xml文件中。 您误解了xml文件中android:onClick标记的用法。 请检查the document of android:onClick tag

答案 3 :(得分:0)

我认为如果你想让你的代码更漂亮和更好,你应该使用 ButterKnife 进行视图注入并使用它指定onclick方法,如下所示:

1。)将ButterKnife添加到您的依赖项

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ...
    compile 'com.jakewharton:butterknife:6.0.0'

2。)将你的观点注入现场

@InjectView(R.id.button)
public Button button;

3.)指定onClick方法

@OnClick(R.id.button)
public void myOnClickMethod(View view)
{
    //do things
}

4.)用ButterKnife注射活动或片段

的活动:

@Override
public void onCreate(Bundle saveInstanceState)
{
    super.onCreate(saveInstanceState);
    ButterKnife.inject(this);
    ...
}

片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState)
{
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    ButterKnife.inject(this, rootView);
    ...
    return rootView;
}