Android 在按钮onclick中调用片段问题

Android 在按钮onclick中调用片段问题,android,android-layout,android-fragments,Android,Android Layout,Android Fragments,我创建了一个片段扩展类来调用布局,如下所示 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="v

我创建了一个片段扩展类来调用布局,如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

   <TextView
        android:id="@+id/date_time_label"
        android:layout_centerVertical="true"
        android:layout_marginLeft="200dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:textSize="32dp"
        android:textStyle="bold"

        android:text="time_label"
        />

    <TextView
        android:id="@+id/last_view_time"
        android:layout_toRightOf="@+id/date_time_label"
        android:layout_alignBaseline="@+id/date_time_label"
        android:layout_marginLeft="8dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="32dp"

        />

</LinearLayout>



package com.appnetics;

import java.text.SimpleDateFormat;
import java.util.Date;



import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;




/**
 * DateTime
 */
public class details extends Fragment {
    private static String getDateTimeString(Date time) {
        return new SimpleDateFormat("d MMM yyyy HH:mm:ss")
            .format(time);
    }

    private final String time = getDateTimeString(new Date());

    /** @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) */
    @Override
    public View onCreateView(
        LayoutInflater inflater,
        ViewGroup container,
        Bundle b)
    {
        View view = inflater.inflate(
            R.layout.details,
            container,
            false);  //!!! this is important

        ((TextView) view.findViewById(R.id.last_view_time))
            .setText(time);

        return view;
    }
}
但这会引起错误 类型new View.OnClickListener(){}的方法getFragmentManager()未定义


知道如何解决这个问题吗?在侦听器定义之前,声明并将fragmentManager设置为final

final FragmentManager fragmentManager = getFragmentManager();

<your listener declaration>
final FragmentManager FragmentManager=getFragmentManager();

您应该能够在侦听器中使用它。

如果从片段调用活动,然后在下面编写代码,或者从片段调用片段,然后简单地替换代码,而不是startactivity onclick方法

public class FragmentA extends Fragment implements OnClickListener{

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

        View v = inflater.inflate(R.layout.fragment_start, container, false);

        Button button1 = (Button) v.findViewById(R.id.StartButton);
        button1.setOnClickListener(this);
        return v;
    }

    @Override
    public void onClick(View v) {
        startActivity(new Intent(getActivity(),testing.class));
        }
    }
}
下面的代码有效

    Button publishButton =(Button)                                                                                                  
                          fragmentView.findViewById(R.id.publishButton);
    publishButton.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
              publish();
           }
      });

getApplicationContext().getFragmentManager()给出错误getFragmentManager()方法对于类型ContextI未定义,但它给出错误getFragmentManager()方法对于类型TestFragmentActivity未定义android目标是什么<代码>getFragmentManager()
从3.0开始提供:否则,您应该使用
getSupportFragmentManager()
我使用了它,但它给出了一个错误getSupportFragmentManager()方法对于类型TestFragmentActivity是未定义的,我的目标是2.2我想这是显而易见的,但是您是否从FragmeCodevity扩展了您的活动,不是吗?(如果从“活动”扩展,则该方法将不可用)::“调试”代码并不容易,因为您没有发布代码。这似乎不适用于API 21。有什么建议吗?
public class FragmentA extends Fragment implements OnClickListener{

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

        View v = inflater.inflate(R.layout.fragment_start, container, false);

        Button button1 = (Button) v.findViewById(R.id.StartButton);
        button1.setOnClickListener(this);
        return v;
    }

    @Override
    public void onClick(View v) {
        startActivity(new Intent(getActivity(),testing.class));
        }
    }
}
    Button publishButton =(Button)                                                                                                  
                          fragmentView.findViewById(R.id.publishButton);
    publishButton.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
              publish();
           }
      });