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();
}
});