片段和onClick按钮

时间:2017-10-28 07:13:20

标签: java android android-fragments

我正在尝试为片段内的按钮(R.id.addclick)设置onclick方法。没有错误,但每次我启动模拟器并按下按钮时,它会一直显示“不幸的是......已停止”。请给我一些建议。

first_layout xml:

Button
        android:id="@+id/addclick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/edit17"
        android:layout_marginTop="16dp"
        android:layout_toEndOf="@+id/textView32"
        android:layout_toRightOf="@+id/textView32"
        android:onClick="addclick"
        android:text="submit" />

我的整个片段代码:

package com.example.administrator.realrandd;

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 * Created by Administrator on 2017-10-28.
 */
public class FirstLayout extends Fragment implements View.OnClickListener {
    View v;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        v = inflater.inflate(R.layout.first_layout, container, false);

        Button b = (Button) v.findViewById(R.id.addclick);
        b.setOnClickListener(this);
        return v;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.addclick:

                EditText number1 = (EditText)v.findViewById(R.id.edit1);
                EditText number2 = (EditText)v.findViewById(R.id.edit2);

                TextView result = (TextView)v.findViewById(R.id.Final);

                int n1 = Integer.parseInt(number1.getText().toString());
                int n2 = Integer.parseInt(number2.getText().toString());

                result.setText(Integer.toString(n1+n2));



                break;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

名称不匹配:在您的布局中,您指的是名为

的方法
android:onClick="addclick"

但在您的代码中,您设置了一个名为

的方法
public void onClick(View v) {

和..." addclick" !=" onClick"

您应该使这两个名字匹配。

请在代码中按顺序命名您的方法:

public void addclick(View v) {

答案 1 :(得分:0)

我认为以下文字字段为空。这就是为什么空字符串不能转换为int。

$ ./bin/cnvstrtoint < ../dat/numdata.txt
str[ 0] : 8      arr[ 0] :   8
str[ 1] : 2      arr[ 1] :   2
str[ 2] : 0      arr[ 2] :   0
str[ 3] : 10     arr[ 3] :  10
str[ 4] : 3      arr[ 4] :   3
str[ 5] : 7      arr[ 5] :   7
str[ 6] : 3      arr[ 6] :   3
str[ 7] : 7      arr[ 7] :   7
str[ 8] : 12     arr[ 8] :  12
str[ 9] : 12     arr[ 9] :  12
str[10] : 12     arr[10] :  12
str[11] : 12     arr[11] :  12
str[12] : 1      arr[12] :   1
str[13] : 10     arr[13] :  10
str[14] : 12     arr[14] :  12
str[15] : 12     arr[15] :  12
str[16] : 12     arr[16] :  12
str[17] : 12     arr[17] :  12
str[18] : 7      arr[18] :   7
str[19] : 3      arr[19] :   3
str[20] : 7      arr[20] :   7
str[21] : 3      arr[21] :   3

在这种情况下,如果您查看日志,您会发现

EditText number1 = (EditText)v.findViewById(R.id.edit1);
EditText number2 = (EditText)v.findViewById(R.id.edit2);

错误