我在片段类中启动新活动时遇到了麻烦。每次,我单击指定的图像按钮,它将有一个错误,表明它是从另一个类未定义。该类是所述片段活动的持有者。
这是代码
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
rootView = inflater.inflate(R.layout.activity_seat_plan, container, false);
button1 = (ImageButton)rootView.findViewById(R.id.ImageButton1);
return rootView;
}
点击按钮
public void AssignAddress(View view){
Intent i = new Intent(getActivity(), AssignSeat.class);
startActivity(i);
}
这里是logcat
03-15 23:27:56.842: W/dalvikvm(23000): threadid=1: thread exiting with uncaught exception (group=0x40bdc438)03-15 23:27:56.852: E/AndroidRuntime(23000): FATAL EXCEPTION: main03-15 23:27:56.852: E/AndroidRuntime(23000): java.lang.IllegalStateException: Could not find a method AssignAddress(View) in the activity class com.example.mcr.InstructorMenu for onClick handler on view class android.widget.ImageButton with id 'ImageButton1'
答案 0 :(得分:0)
首先,显示更多代码;其次,代码抱怨不存在的方法。这可能对您有所帮助:
在你的片段中,你需要为你的按钮实现点击监听器(它也必须在片段布局中)。
在点击方法中,您应该开始新的活动 - 您甚至不需要一种方法。
同样,您的活动结构的更多代码可能会对您的片段的其他部分有所帮助。
答案 1 :(得分:0)
我认为您正在尝试从xml中挂钩AssignAddress(View视图)方法,如android:onClick="AssignAddress"
这将无法工作,因为在用户单击此按钮后,编译器将尝试在片段所在的活动中找到该方法,但不会在您声明该方法的片段中找到该方法。因此,您必须从xml中删除它并更改为以下
public class YourFragment extends Fragment implements
OnClickListener {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
rootView = inflater.inflate(R.layout.activity_seat_plan, container, false);
button1 = (ImageButton)rootView.findViewById(R.id.ImageButton1);
button1.setOnClickListener(this);
return rootView;
}
////your other codes
///////
//the OnClickListener
@Override
public void onClick(View v) {
Intent i=null;
switch (v.getId()) {
case R.id.ImageButton1:
i= new Intent(getActivity(), AssignSeat.class);
startActivity(i);
break;
default:
break;
}
}
}