2014-11-21 62 views
-1

我有2个XML文件,“activity_main”和“main_screen”,都有1个按钮各这里有按钮的XML:冲突与按钮的Android

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

<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" /> 

而“保存数据按钮”<这一个是在第二个屏幕上。

<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()); 
       } 
      } 
     }); 

问题是...我不明白怎么我会对待“onClick”函数,因为“onClick”方法是抽象的,所以我不能更改它的名称,第二个按钮如何使用MainScreen onClick和第一个按钮使用MainActivity onClick。

回答

0

删除

android:onClick="onClick" 

你不需要有这样的,因为你是在Java代码中设置onclicklisteners

给我的信息,如果这有助于与否

编辑

确保您已正确捕捉到您的按钮变量:

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

它除去错误,但第二按钮被调用的第一个“的onClick”的方法,这就是问题所在,我需要它来打电话给第二个。我看不到这是怎么发生的,clickListener在button2里面。 – 2014-11-21 11:53:16

+0

看看编辑 – 2014-11-21 11:56:48

0

变化的函数名称:

android:onClick="onClick" 

android:onClick="someMethod" 
+0

我不能因为这两个按钮都是在“onCreate”方法中创建的,我需要它调用onClick中的onCreate。 – 2014-11-21 12:01:25

+0

试试这个http://stackoverflow.com/questions/5869871/how-to-catch-a-click-event-on-a-button链接...希望这个工程 – 2014-11-21 12:04:06

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; 
}