gpt4 book ai didi

java - Android 如何从我的主要 Activity 中调用 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:45 24 4
gpt4 key购买 nike

我是 android 开发的新手。

在我的例子中,我创建了一个主要 Activity 和一个 fragment 。主要 Activity 作为两个按钮。

当我点击按钮时,我的 fragment 应该加载。我该如何实现?

主要 Activity .XML

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment 2"
android:id="@+id/fragment_button_2"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />

<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment 1"
android:id="@+id/fragment_button_1"
android:layout_above="@+id/fragment_button_2"
android:layout_alignLeft="@+id/fragment_button_2"
android:layout_alignStart="@+id/fragment_button_2"
android:layout_marginBottom="33dp" />
</RelativeLayout>

主要 Activity .java

package com.bentgeorge.fragment;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button fragment_btn_1;
private Button fragment_btn_2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragment_btn_1 = (Button) findViewById(R.id.fragment_button_1);
fragment_btn_2 = (Button) findViewById(R.id.fragment_button_2);


}

@Override
public void onClick(View v) {

Fragment1 frag = new Fragment1();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.mainlayout,frag,"Test Fragment");
transaction.commit();

}
}

fragment _ fragment 1.xml

<FrameLayout 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="com.bentgeorge.fragment.Fragment1">

<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />

</FrameLayout>

fragment 1.java

package com.bentgeorge.fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


/**
* A simple {@link Fragment} subclass.
*/
public class Fragment1 extends Fragment {


public Fragment1() {
// Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_fragment1, container, false);
}

}

没有完成太多代码,因为我对 Internet 上可用的教程感到困惑。

请帮我解决这个问题

感谢和问候,

更新:

我做了一些更改,我的 fragment 现在正在加载。但按钮仍然可见。我怎样才能隐藏按钮

Fragment

最佳答案

更新:请像这样更改您的 MainActivity:

  public class MainActivity extends AppCompatActivity  {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment fragment = new MainFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_frame, fragment, fragment.getClass().getSimpleName()).addToBackStack(null).commit();

}
}

像这样更改您的 activity_main.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"                
android:id="@+id/fragment_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

请创建一个 xml fragment_main.xml:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"                
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment 2"
android:id="@+id/fragment_button_2"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />

<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment 1"
android:id="@+id/fragment_button_1"
android:layout_above="@+id/fragment_button_2"
android:layout_alignLeft="@+id/fragment_button_2"
android:layout_alignStart="@+id/fragment_button_2"
android:layout_marginBottom="33dp" />
</RelativeLayout>

同时创建一个 fragment 作为 MainFragment:

public class MainFragment extends Fragment implements View.OnClickListener{
private Button fragment_btn_1;
private Button fragment_btn_2;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
fragment_btn_1 = (Button) view.findViewById(R.id.fragment_button_1);
fragment_btn_2 = (Button) view.findViewById(R.id.fragment_button_2);
fragment_btn_1.setOnClickListener(this);
fragment_btn_2.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.fragment_button_1:
Fragment fragment1 = new Fragment1();
moveToFragment(fragment1);
break;
case R.id.fragment_button_2:
Fragment fragment2 = new Fragment2();
moveToFragment(fragment2);
break;
}
}

private void moveToFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_frame, fragment, fragment.getClass().getSimpleName()).addToBackStack(null).commit();

}
}

希望对您有所帮助。如果您有任何疑问,请告诉我。

关于java - Android 如何从我的主要 Activity 中调用 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com