我可以在这样的片段中做意图吗?

时间:2014-07-09 12:20:00

标签: android android-intent android-fragments

我可以在这样的片段中做一个意图吗?按下按钮后程序崩溃。

public class PagesFragment extends Fragment {



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



  Button sendBtn = (Button) getView().findViewById(R.id.sendEmail);
  sendBtn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
         Intent i= new Intent("claimrewardemail");
         startActivity(i);
    }
});

3 个答案:

答案 0 :(得分:0)

这是因为您的按钮未在onStart中创建。请将代码移到onViewCreated

@Override
public void onViewCreated() {
    Button sendBtn = (Button) getView().findViewById(R.id.sendEmail);
    sendBtn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Intent i= new Intent("claimrewardemail");
        startActivity(i);
    }
});

答案 1 :(得分:0)

是的,你可以在这样的片段中做一个意图。

实施例

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

            View view = inflater.inflate(R.layout.my_layout, container, false); //(1)

            Button sendBtn = (Button) view.findViewById(R.id.sendEmail);   //(2)

          sendBtn.setOnClickListener(new View.OnClickListener() {          //(3)
          public void onClick(View view) {
            Intent i= new Intent(getActivity(),WhereUWant2Navigate.class); //(4)
            startActivity(i);
          }
      });
    return view;
    }

说明

  1. 你明白了。 第(1)行
  2. 然后使用view.findViewById从该视图中获取按钮。 线 (2)
  3. 然后您可以在按钮上使用setOnClickListener第(3)行
  4. action Intent错误行(4)
  5. WhereUWant2Navigate.class是您希望从activity打开的第二个Fragment

    <强>更新

    问题所在 - http://tinypic.com/view.php?pic=29hf8h&s=8#.U74yDZSSzH8

    当您的布局xml中设置了android:onClick="onClick"时,会出现此问题。 您已经在类中定义了侦听器,因此需要在布局xml中定义。 所以从布局xml中删除它。

答案 2 :(得分:0)

需要logcat。你确定你是

Intent i= new Intent("claimrewardemail");

给你一个“真实”的东西?

像其他人一样,你应该对这样的代码没问题:

/** Called when the user clicks the Send button */
public void openMyActivity(View view) {
    Intent intent = new Intent(this, LanguageGuideActivity.class);
    startActivity(intent);
}

然后在按钮上(或任何你想要的地方)使用此功能。

像:

<Button
    android:layout_width="150sp"
    android:layout_height="wrap_content"
    android:text="Calculate"
    android:id="@+id/btn_calculate"
    android:layout_gravity="center_horizontal"
    android:onClick="openMyActivity" />