启动新活动时出现片段错误

时间:2014-03-15 15:36:06

标签: android android-fragments

我在片段类中启动新活动时遇到了麻烦。每次,我单击指定的图像按钮,它将有一个错误,表明它是从另一个类未定义。该类是所述片段活动的持有者。

这是代码

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'

2 个答案:

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

}