OnClickListener没有处理Fragment

时间:2016-07-17 06:21:10

标签: android android-fragments

我尝试使用Fragment并遇到OnClickListener问题。有人可以帮忙吗?

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        frag_one frag1=new frag_one();
        FragmentManager manager=getSupportFragmentManager();
        FragmentTransaction transaction=manager.beginTransaction();
        transaction.add(R.id.top,frag1,"");
        transaction.commit();
    }
}

frag_one.java

public class frag_one extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return  inflater.inflate(R.layout.activity_frag_one,container,false);
    }

    public class calculator extends AppCompatActivity implements View.OnClickListener {
        TextView get_result;
        EditText get_num1;
        EditText get_num2;
        Button get_button;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_frag_one);
            get_result=(TextView)findViewById(R.id.result);
            get_num1=(EditText) findViewById(R.id.num1);
            get_num2=(EditText) findViewById(R.id.num2);
            get_button=(Button)findViewById(R.id.submit);
            get_button.setOnClickListener(this);
        }
        public void onClick(View v) {
            int num1=Integer.parseInt((get_num1.getText().toString()));
            int num2=Integer.parseInt((get_num2.getText().toString()));
            int sum=num1+num2;
            get_result.setText(Integer.toString(sum));
        }
    }
}

当我在不使用Fragment的情况下运行正常活动时。当我单击按钮时,计算工作。但是当我搬到Fragment时,它不起作用。请帮忙! THX

enter image description here

2 个答案:

答案 0 :(得分:1)

您创建了第二个使用Fragment布局的Activity,而不是将逻辑放入Fragment类....

public class frag_one extends Fragment implements View.OnClickListener {

    TextView get_result;
    EditText get_num1;
    EditText get_num2;
    Button get_button;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.activity_frag_one,container,false);

        get_result=(TextView)rootView.findViewById(R.id.result);
        get_num1=(EditText)rootView.findViewById(R.id.num1);
        get_num2=(EditText) rootView.findViewById(R.id.num2);
        get_button=(Button)rootView.findViewById(R.id.submit);
        get_button.setOnClickListener(this);

        return rootView;
    }

    public void onClick(View v) {
        // TODO: Check v.getId() == R.id.submit
        int num1=Integer.parseInt((get_num1.getText().toString()));
        int num2=Integer.parseInt((get_num2.getText().toString()));
        int sum=num1+num2;
        get_result.setText(Integer.toString(sum));
    }
}

答案 1 :(得分:0)

你没有在这里提到任何观点,希望这会对你有帮助

public class ABC extends Fragment implements OnClickListener {

View view;
Context context;

Button btnClick;

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

    view = inflater.inflate(R.layout.fragment, container, false);

    return view;
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    context = activity;
}

@Override
public void onDestroy() {
    super.onDestroy();

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    btnClick = (Button) view.findViewById(R.id.btnClick);
    btnClick.setOnClickListener(this);


}

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


        break;
    default:
        break;
    }

}

}