我有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。
答案 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;
}