我试图在片段中添加一个按钮,然后从那里导航到我尝试使用常规意图操作执行的活动,但该操作确实起作用
这是我尝试过的片段
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_more,container,false);
Button button = findViewById(R.id.btnLogin);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view.getId() == R.id.btnLogin) {
Intent intent = new Intent (MainActivity.this,login.class);
startActivity(intent);
}
}
findViewById在这里不起作用
答案 0 :(得分:1)
尝试一下
Intent intent = new Intent();
intent.setClass(getActivity(), other.class);
getActivity().startActivity(intent);
答案 1 :(得分:1)
使用下面的代码将起作用
View v= inflater.inflate(R.layout.fragment_more,container,false);
Button button = v.findViewById(R.id.btnLogin);
button .setOnClickListener(v -> {
Intent intent = new Intent(getActivity(), YourActivity.class);
startActivity(intent);
});
return view;
答案 2 :(得分:0)
调用获取上下文而不是MainActivity。this
您处于碎片之中。片段不会扩展上下文,并且您不在主要活动中。
答案 3 :(得分:0)
使用此方法来findViewByID
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_more,container,false);
Button button = view.findViewById(R.id.btnLogin);
button.setOnClickListener(this);
return view;
}
答案 4 :(得分:0)
首先,初始化您的视图,例如:
public View onCreateView(LayoutInflater inflater,
ViewGroup container, @Nullable Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment_more,container,false);
Button button = view.findViewById(R.id.btnLogin);
button.setOnClickListener(this);
return view;
}
尝试一下。 这将起作用。
答案 5 :(得分:0)
尝试一下-
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
Button btn= (Button) getActivity().findViewById(
R.id.button);
btn.setOnClickListener((OnClickListener) this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), YourActivity.class);
startActivity(intent);
}
答案 6 :(得分:0)
您的代码存在的问题是您要返回视图,然后从xml中给出ID,然后单击它。您需要首先在on create中完成所有工作,然后返回视图。就是这样。
Private View itemView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
itemView = inflater.inflate(R.layout.fragment_more, container, false);
Button button = itemView.findViewById(R.id.btnLogin);
button.setOnClickListener(this);
return itemView;
}
@Override
public void onClick(View view) {
if(view.getId() == R.id.btnLogin) {
Intent intent = new Intent (getActivity() ,login.class);
startActivity(intent);
}
}
希望它对您有用... !!