片段无法在android中运行时更改

时间:2017-06-11 05:12:23

标签: java android

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Fregment extends AppCompatActivity {

Button btn,btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);



    btn=(Button)findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Fragment fr;

            fr=new page1();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft=fm.beginTransaction();
            ft.replace(R.id.frame, fr);
            ft.commit();
            Toast.makeText(getApplicationContext(),"Previous",Toast.LENGTH_LONG).show();
        }
    });
    btn2=(Button)findViewById(R.id.btn2);
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Fragment fr;

            fr=new page2();
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft=fm.beginTransaction();

            ft.replace(R.id.frame, fr);
            ft.commit();
            Toast.makeText(getApplicationContext(),"Next",Toast.LENGTH_LONG).show();
        }
    });
}

}

这是我的java代码 在xml中

<fragment
    android:name="in.solutiontech.example19clock.page1"
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

我想将我的片段从第1页更改为第2页。如果我不让这个行应用程序不运行,也创建了第一页和第二页         机器人:名字= “in.solutiontech.example19clock.page1” 如果我给它片段不会改变运行时间

3 个答案:

答案 0 :(得分:1)

您应该将标签名称“fragment”更改为&#34; Framelayout&#34;在您的XML文件中。因为方法的第一个参数&#34; replace()&#34;是布局容器的viewid

答案 1 :(得分:1)

如果您使用的是API&lt;,则必须使用getSupportFragmentManager()而不是getFragmentManager()。 14。

    import android.app.Fragment;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;

    public class Fregment extends AppCompatActivity {

    Button btn,btn2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);



        btn=(Button)findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fr;

                fr=new page1();
                FragmentManager fm = getSupportFragmentManager();
                FragmentTransaction ft=fm.beginTransaction();
                ft.replace(R.id.frame, fr);
                ft.commit();
                Toast.makeText(getApplicationContext(),"Previous",Toast.LENGTH_LONG).show();
            }
        });
        btn2=(Button)findViewById(R.id.btn2);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fr;

                fr=new page2();
                FragmentManager fm = getSupportFragmentManager();
                FragmentTransaction ft=fm.beginTransaction();

                ft.replace(R.id.frame, fr);
                ft.commit();
                Toast.makeText(getApplicationContext(),"Next",Toast.LENGTH_LONG).show();
            }
        });
    }

    }

在XML文件中,您需要使用FrameLayout而不是Fragment,因为您不能只替换活动中静态创建的片段。

<FrameLayout
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

进行这些更改,您的代码应该可以正常运行。

答案 2 :(得分:0)

将框架作为FrameLayout或RelativeLayout,我建议您使用

getSupportFragmentManager() 

而不是

getFragmentManager();

希望这有帮助。