Java 如何添加onClickListener以将新活动打开到片段活动

Java 如何添加onClickListener以将新活动打开到片段活动,java,android,xml,button,onclick,Java,Android,Xml,Button,Onclick,我是android studio的新手,所以我会尽可能地解释。 我使用片段制作了一个菜单,因此我的活动\u home是一个片段活动。在片段化活动中,我创建了一个按钮,单击该按钮后,应该会打开一个新活动 问题是我不知道如何在片段化活动中实现onClickListener 我参加的每一个教程都是从一开始就做的。 这是我的主要活动: package com.example.relja.diplomskirad; import android.os.Bundle; import android.su

我是android studio的新手,所以我会尽可能地解释。 我使用片段制作了一个菜单,因此我的
活动\u home
是一个片段活动。在片段化活动中,我创建了一个按钮,单击该按钮后,应该会打开一个新活动

问题是我不知道如何在片段化活动中实现
onClickListener

我参加的每一个教程都是从一开始就做的。 这是我的主要活动:

package com.example.relja.diplomskirad;


import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(false);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

    }

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new home(), "Home");
        adapter.addFragment(new profil(), "Profil");
        adapter.addFragment(new mapa(), "Mapa");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }


}
这是home xml,按钮是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".home">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="80dp"
        android:orientation="vertical">
        <LinearLayout
            android:id="@+id/glavnaStranica1"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:orientation="horizontal"
            android:gravity="center">

            <ImageView
                android:id="@+id/logoSlika"
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:src="@drawable/logo2"
                android:layout_gravity="center"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/glavnaStranica2"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:orientation="horizontal"
            android:gravity="center"
            android:layout_marginStart="30dp">

            <EditText
                android:id="@+id/search"
                android:layout_width="250dp"
                android:layout_height="38dp"
                android:hint="@string/search"
                android:background="@drawable/ivica"
                android:drawableLeft="@drawable/search"
                android:drawablePadding="10dp"
                android:inputType="text"
                />
            <Button
                android:id="@+id/dugme"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/dugme"
                />
        </LinearLayout>

        <Button
            android:id="@+id/dugmeLogin"
            android:layout_width="70dp"
            android:layout_height="40dp"
            android:text="@string/dugmeLogin"
            android:layout_gravity="end"
            android:layout_marginRight="10dp"
            android:onClick="loginLogin"
            style="?android:attr/borderlessButtonStyle"/>

    </LinearLayout>
</RelativeLayout>


您可以在onCreateView()方法中的片段“home”中使用此代码。您可以尝试此操作。。这会有帮助的

 public class home extends Fragment {
       private Button btn_dumge_login;

        public home() {
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            return inflater.inflate(R.layout.activity_home, container, false);

        }
@Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

         btn_dumge_login = view.findViewById(R.id.dumgeLogin)
           btn_dumge_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), TestActivity.class) ;
                getActivity().startActivity(intent);
            }
        });
    }

}

您应该首先选择要从中导航的视图,例如,id为dugmeLogin的按钮

那么你的代码应该是这样的

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

    View view = inflater.inflate(R.layout.activity_home, container, false);

    Button loginButton = view.findViewById(R.id.dugmeLogin);

    loginButton.setOnClickListener(v -> {
        // You code goes here
    });
    return view;


}

java

如果你只是在片段中执行onClickListener,然后在片段ii中编写onClickListener,如果你想在父片段活动中单击片段,那么你需要使用回调。有一件事我不明白,这个问题每周会出现两到三次,如何解决?为什么?欢迎兄弟。。请接受我的回答并放弃投票,这样面对这个问题的人才能明白哪一个是正确的,哪一个是有效的。我不能放弃投票,因为我是新来的,它不会让我投票。但我接受了。
View view = inflater.inflate(R.layout.your_layout_file, container, false);
view.findViewById(R.id.button_id).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
   getContext().startActivity(new Intent(getContext(), YourNewActivity.class));
});
return view;
 public class home extends Fragment {
       private Button btn_dumge_login;

        public home() {
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            return inflater.inflate(R.layout.activity_home, container, false);

        }
@Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

         btn_dumge_login = view.findViewById(R.id.dumgeLogin)
           btn_dumge_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), TestActivity.class) ;
                getActivity().startActivity(intent);
            }
        });
    }

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

    View view = inflater.inflate(R.layout.activity_home, container, false);

    Button loginButton = view.findViewById(R.id.dugmeLogin);

    loginButton.setOnClickListener(v -> {
        // You code goes here
    });
    return view;


}