簡體   English   中英

如何從Android中的另一個片段類調用一個片段的方法

[英]how to call method of one fragment from another fragment class in android

我想從fragmentA調用FragmentB(Class)的方法,我嘗試通過在fragmentA(class)中創建fragmentb的對象來嘗試,但是在這里它不起作用是該類中fragmentA的代碼,我有一個方法可以通過它調用FragmentB類的方法

adddata.setOnClickListener(
        new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean isInserted = myDb.addalldata(monthly_income.getText().toString(),
                room_rent.getText().toString(),
                mess_rent.getText().toString());
            if (isInserted = true)
                Toast.makeText(getActivity().getBaseContext(), "Data Inserted", Toast.LENGTH_LONG).show();
            else
            Toast.makeText(getActivity().getBaseContext(), "Data not Inserted", Toast.LENGTH_LONG).show();
        }
    }
);

我想稱這個為fragmentB的方法

public void show() {
    Cursor res = myDb.getAllData();
    StringBuffer buffer = new StringBuffer();
    while (res.moveToNext()) {
        displayresult.setText( buffer.append( res.getString(1)));
    }
}

我嘗試通過fragmentA方法編寫此代碼,但出現錯誤

FragmentA fragment=          
    (FragmentA)getSupportFragmentManager().findFragmentById(R.id.pageview2);
    ((FragmentA)fragment).show();

試試這個解決方案:

((FragmentA) getActivity()
    .getSupportFragmentManager()
    .findFragmentById(R.id.pageview2)
).show();

您可以像這樣創建靜態變量

static  FragmentB f;

public static FragmentB newInstance(String title) {
        FragmentB f = new FragmentB();
        Bundle b = new Bundle();
        b.putString(ARG_STATION_TITLE, title);
        f.setArguments(b);
        return f;
    }

您可以使用getInstance()方法獲取fragmentB的實例

public static FragmentB getInstance(){
    return f;
}

這樣調用FragmentB.getInstance().methodinFragmentB();

在FragmentA類中,您可以執行以下代碼:-

private static FragmentA instance = null;

@Override  
public void onCreate(@Nullable Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
instance = this;  
}

public static FragmentA getInstance() {  
return instance;  
}

在FragmentB類中,您可以按以下方式調用方法:

FragmentA.getInstance().show(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM