如何从片段导航到活动

时间:2019-09-10 06:27:31

标签: java android android-fragments android-intent

我试图在片段中添加一个按钮,然后从那里导航到我尝试使用常规意图操作执行的活动,但该操作确实起作用

这是我尝试过的片段

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在这里不起作用

7 个答案:

答案 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);
        }
    }

希望它对您有用... !!