2014-07-04 79 views
2

我正在創建一個帶有片段的登錄頁面,但每當我運行應用程序時,我只會得到一個白色的碎石,沒有edittext沒有按鈕的任何按鍵。調用片段時只顯示白色屏幕

LoginFragment

public class LoginFragment extends Fragment { 

    private View view; 
    private Button btcancel; 
    private EditText etpassword; 
    private Button btlogin; 
    private EditText etusername; 

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

    private void initialize() { 

     btcancel = (Button) getActivity().findViewById(R.id.bt_cancel); 
     etpassword = (EditText) getActivity().findViewById(R.id.et_password); 
     btlogin = (Button) getActivity().findViewById(R.id.bt_login); 
     etusername = (EditText) getActivity().findViewById(R.id.et_user_name); 
    } 
} 

LoginActivity

public class LoginActivity extends Activity { 
    private FragmentTransaction fragmentTransaction; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     fragmentSetUp(); 
    } 

    private void fragmentSetUp() { 
     fragmentTransaction=getFragmentManager().beginTransaction(); 
     LoginFragment loginFragment=new LoginFragment(); 
     fragmentTransaction.add(loginFragment,"login").commit(); 
    } 
} 

回答

1

您需要有一個父佈局來放置一個片段,但在您的情況下,您可以使用android的默認佈局作爲片段的父容器。

解決方案:

fragmentTransaction=getFragmentManager().beginTransaction(); 
    LoginFragment loginFragment=new LoginFragment(); 
    fragmentTransaction.add(android.R.id.content,loginFragment,"login").commit(); 
+0

它工作ty.And先生這是建議tp創建一個容器的片段? – Anuj

+1

@Anuj對我來說,是的,它是在你的設計中創造更多的深度。 –

+0

所以我必須創建一個不同的佈局,這將有容器? – Anuj

0

這可能是因爲你錯過了setContentViewactivity。在佈局內部,您應該聲明一個容器,您可以在其中添加/替換Fragment s。同樣在LoginFragment中,您使用getActivity來檢索Fragment的組件。你應該使用充氣的視圖。 imo的最佳方法是重寫onCreatedView

+0

但我爲登錄活動創建了只有1個佈局 – Anuj

0

你也可以使用 -

fragmentTransaction=getFragmentManager().beginTransaction(); 
    LoginFragment loginFragment=new LoginFragment(); 
    fragmentTransaction.add(0,loginFragment,"login").commit(); 

片段交易 -

公共抽象FragmentTransaction附加(INT containerViewId,弗拉塊 片段,字符串標記)

在API級別11中添加將片段添加到活動狀態。這個 片段也可以有選擇地將其視圖(如果Fragment.onCreateView 返回非null)放入活動的容器視圖中。

參數

containerViewId - 容器該片段是 被放置在的可選標識符如果爲0,它不會被放置在容器中。

片段 - 要添加的片段。此片段不得已經被添加到活動中。

標記 - 片段的可選標記名稱,以便稍後使用FragmentManager.findFragmentByTag(String)檢索 片段。

返回 - 返回相同的FragmentTransaction實例。