gpt4 book ai didi

java - 单击按钮更改 fragment

转载 作者:行者123 更新时间:2023-11-29 21:08:21 25 4
gpt4 key购买 nike

我想根据按钮点击更改 fragment 。 (我制作了两个 fragment 类,分别叫做 fragmentLeft 和 fragmentMiddle)

这是我的 MainActivity.java

public class MainActivity extends Activity {

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


}
Fragment fr;
public void selectFrag(View view) {


if(view == findViewById(R.id.bigbutton_left)) {
fr = new fragmentLeft();



}else {
fr = new fragmentMiddle();

}

FragmentManager fm = getFragmentManager();

if (fm != null) {
// Perform the FragmentTransaction to load in the list tab content.
// Using FragmentTransaction#replace will destroy any Fragments
// currently inside R.id.fragment_content and add the new Fragment
// in its place.
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_place, fr);
ft.commit();
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);


return true;
}

}

这是fragmentLeft.java

public class fragmentLeft extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {

//Inflate the layout for this fragment

return inflater.inflate(
R.layout.fragmentleft, container, false);
}
}

除了传递给 infater.inflate() 的布局 id 之外,fragmenttwo 也是如此

我已经将两个布局文件制作成两个,名称也正确。这是我的 activity_main.xml 中 fragment 的定义

但我无法让按钮执行任何操作。没有交易发生,我被第一个 fragment 卡住了。

经过一番谷歌搜索后,我了解到不建议您在布局中使用 fragment ,而是一些其他类型的布局,但我看到了这个示例代码 http://examples.javacodegeeks.com/android/core/app/fragment/android-fragments-example/这似乎工作得很好。

问题是什么?

::编辑::确实发生了一些奇怪的事情。如果我将此布局 xml 文件用于主要 Activity:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Fragment No.1"
android:onClick="selectFrag" />

<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="selectFrag"
android:text="Fragment No.2" />

<fragment
android:name="com.mainpackage.FragmentOne"
android:id="@+id/fragment_place"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>

fragment 会发生变化并按预期运行。但是如果我使用这种布局:

<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=".MainActivity" >



<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignBaseline="@+id/bigbutton_middle"
android:layout_alignBottom="@+id/bigbutton_middle"
android:layout_marginLeft="7dp"
android:layout_toRightOf="@+id/bigbutton_middle"
android:background="@drawable/mainbutton_right" />

<Button
android:id="@+id/bigbutton_left"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignBaseline="@+id/bigbutton_middle"
android:layout_alignBottom="@+id/bigbutton_middle"
android:layout_marginRight="7dp"
android:layout_toLeftOf="@+id/bigbutton_middle"
android:background="@drawable/mainbutton_left" />

<Button
android:id="@+id/bigbutton_middle"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="187dp"
android:background="@drawable/mainbutton_middle" />
<fragment
android:id="@+id/fragment_place"
android:name="com.mainpackage.FragmentOne"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_below="@+id/bigbutton_right" />


</RelativeLayout>

fragment 似乎没有改变,即按钮似乎已经死了。

可能是什么问题?

我正在使用 Eclipse Juno

最佳答案

您没有获得为使 FragmentTransaction 发生而单击的 Buttons 的引用。您需要在 Buttons 上设置 OnClickListeners,以便它们可以执行相关代码。

第二个布局不显示的一个原因是因为您引用了一个不存在的 id:

<fragment
android:id="@+id/fragment_place"
android:name="com.mainpackage.FragmentOne"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_below="@+id/bigbutton_right" />

我在该 xml 上没有看到 ID 为 bigButton_rightView

第一个 xml 起作用而第二个 xml 不起作用的另一个原因是因为您没有为第二个 xml 上的任何 Button 设置 onClick: 属性。

关于java - 单击按钮更改 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768388/

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