Android OnClickListener不处理片段
我正在尝试片段,但OnClickListener有问题。有人能帮忙吗 MainActivity.javaAndroid OnClickListener不处理片段,android,android-fragments,Android,Android Fragments,我正在尝试片段,但OnClickListener有问题。有人能帮忙吗 MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.la
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));
}
}
}
当我在正常活动中运行而不使用片段时。当我点击按钮时,计算就开始了。但当我转到片段时,它不起作用。请帮忙!thx
您在这里没有提及任何视图,希望这对您有所帮助
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;
}
}
}
您进行了第二个活动,该活动使用片段的布局,而不是实际将逻辑放入片段类中
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));
}
}
我不明白你们为什么要在fragment下创建新的类,这里有一些特定的方法fragment@Saveen它不能是片段中的
public
。谢谢你指出这一点out@cricket_007如果你创建calculator.java。如何将其链接到片段以使其工作?您不需要创建calculator.java。。。你需要把大部分代码移到片段中,我没有创建任何东西。我格式化了问题中的代码。在一个Java文件的同一级别上不能有两个public
类,因此如果public class calculator
是一个嵌套类,同样,您不需要它,您可以在onCreateView
中使用findViewById
。。。开关(虽然正确)不是必需的是的,我们可以,但fragment onclick中的问题不起作用,所以我添加了简单的演示