我试图在TabActivity片段的PlaceholderFragment类内使用Intent打开下一个Activity。 这是我的代码。
PlaceHolderFragment类
public ImageButton Next;
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View rootView=inflater.inflate(R.layout.fragment_main_tab,container,true);
Next=(ImageButton)rootView.findViewById(R.id.btn_expand);
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
updatedetails();
}
});
View root=null;
switch (getArguments().getInt(ARG_SECTION_NUMBER))
{
case 1:
root = inflater.inflate(R.layout.fragment_main_tab, container, false);
break;
case 2:
root = inflater.inflate(R.layout.fragment_team_screen_, container, false);
break;
}
return root;
}
public void updatedetails(){
Intent intent = new Intent(getActivity(), Enquiery_followup.class);
startActivity(intent);
}
答案 0 :(得分:0)
您可以尝试以下方法吗?充气机的最后一个参数,请设为false。
View rootView = inflater.inflate(R.layout.fragment_main_tab,container,false);
当您不负责将子视图添加到父视图时,绝对不要将attachToRoot传递为true。
您可以通过此答案@ NOW OR NOT NOW
了解更多信息答案 1 :(得分:0)
getActivity()
并不是在片段中获取上下文的最佳方法。
并在创建视图时使attachToRoot = false
尝试以下代码
public class yourClass{
public ImageButton Next;
Context context;
@Override public void onAttach(Context context) {
super.onAttach(context);
this.context=context;
}
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View rootView=inflater.inflate(R.layout.fragment_main_tab,container,false);
Next=(ImageButton)rootView.findViewById(R.id.btn_expand);
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
updatedetails();
}
});
View root=null;
switch (getArguments().getInt(ARG_SECTION_NUMBER))
{
case 1:
root = inflater.inflate(R.layout.fragment_main_tab, container, false);
break;
case 2:
root = inflater.inflate(R.layout.fragment_team_screen_, container, false);
break;
}
return root;
}
public void updatedetails(){
Intent intent = new Intent(context, Enquiery_followup.class);
startActivity(intent);
}
}
尝试一下并发布更新。
编辑1:尝试在onCreateView()中返回rootView而不是root。
答案 2 :(得分:0)
public class TestFragment extends Fragment {
public ImageButton Next;
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_tab, container, false);
View root = null;
switch (getArguments().getInt(ARG_SECTION_NUMBER)) {
case 1:
root = inflater.inflate(R.layout.fragment_main_tab, container, false);
break;
case 2:
root = inflater.inflate(R.layout.fragment_team_screen_, container, false);
break;
}
Next = (ImageButton) rootView.findViewById(R.id.btn_expand);
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
updatedetails();
}
});
return rootView;
}
public void updatedetails() {
Intent intent = new Intent(getActivity(), Enquiery_followup.class);
startActivity(intent);
}
}
重新排列这样的代码。并确保两个xml文件都包含ID为 btn_expand
的ImageButton您的代码存在的问题是onClickListener
在设置view
之前。