2014-09-06 69 views
0

我想從一個片段調用一個新的活動。我有一個按鈕,工具欄,按下時,下面的代碼被稱爲(此事件是片段內)Xamarin Android - 片段控件沒有顯示在actvitiy

Intent secondactitvity = new Intent(this.Activity,typeof(Activity_SecondActivity)); 
StartActivity(secondactitvity); 

現在,新的活動被稱爲這裏是在我的代碼新活動的OnCreate

RequestWindowFeature(WindowFeatures.ActionBar); 
ActionBar.SetIcon(Resource.Drawable.icon_toolbar_back_new); 


ActionBar.SetCustomView(Resource.Layout.ActionBar_Custom_Layout); 
ActionBar.SetDisplayShowCustomEnabled(true); 


base.OnCreate(bundle); 

SetContentView(Resource.Layout.SecondActivity_Layout); 

這裏是SecondActivity_Layout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView 
    android:text="Text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView1" /> 
<fragment 
    class="frag.Fragment_Second" 
    android:id="@+id/fragment_secondActivity" 
    android:paddingTop="10dip" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
</LinearLayout> 

他再次是碎片的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:minWidth="25px" 
android:minHeight="25px"> 
<TextView 
    android:text="@string/secondFragment_name" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView1" /> 
<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/editText1" 
    android:paddingLeft="10dp" /> 
</LinearLayout> 

這裏是片段代碼:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle  savedInstanceState) 
    { 

     return inflater.Inflate(Resource.Layout.Fragment_ProjectDetails, container); //view;// base.OnCreateView(inflater, container, savedInstanceState); 

    } 

public override void OnActivityCreated(Bundle savedInstanceState) 
    { 
     Toast.MakeText(this.Activity, "activity for second fragment created",ToastLength.Short).Show(); 

     base.OnActivityCreated(savedInstanceState); 
    } 

現在的問題是。第二個活動仍爲空,它沒有被填充片段(但沒有錯誤消息)。如果找不到片段或類似的東西,我會理解它,但在這種情況下,片段中的所有功能(onCreateView,onActivityCreated)都被調用,並且Toast也被顯示,但活動爲空。然後我嘗試在第二個活動佈局文件內的片段頂部插入文本視圖,並顯示它,但片段中的控件仍不可見。然後我嘗試更改與第二個活動關聯的片段,將其更改爲正在調用活動的片段,並且正在正確加載該片段(我在.axml文件中更改了它)。

我在這裏錯過了什麼,對我來說它似乎是第二個沒有被創建的屬性,因此控件無法顯示(但是,我可能也是錯的)?

謝謝

回答

0

很好,花了太多的時間在這個我得到了解決方案。首先我注意到的是,我無法訪問第二個片段佈局的視圖(當我嘗試在代碼中閱讀它們時,我無法編譯)。然後,我創建了一個新的axml文件,將它指定爲第二個片段的佈局,並且正在顯示這些控件。 對我來說,這似乎是Xamarin中的一個bug,不知何故,第一個axml沒有相應的註冊(但有趣的是我可以訪問axml本身,但不是控件)。

我是一個從Java(Android開發)遷移到Xamarin的人,我對此寄予厚望。但我必須承認,幾個星期後,第一批熱情就消失了。 Xamarin中有很多缺失,隨着時間的推移,我更多地考慮回到Java並開始學習Objective C for iOS。我現在在Xamarin中做的這個項目,如果我正在使用Java,我已經完成了它,但現在我仍處於早期階段(當然,它不能像Java一樣快,因爲我必須爲所有東西,但...)。 Thers也是Resource文件的問題,有時當我的項目中斷時,我無法阻止它執行,我必須通過Taskbar終止Visual Studio。在大多數情況下,當我這樣做時,資源文件被「銷燬」,當我再次打開該項目時,我無法再啓動它了(在大多數情況下,我沒有打擾,因爲我正在練習,並且創建了一個新的,但如果它是一個更大的項目?) 接下來就是當設計器打開時(當我用xml查看器打開它時,我得到智能感知),.axml中缺少的IntelliSense。我必須在這些視圖之間切換嗎? 現在,這件事與片段,我應該如何信任系統,如果這樣的事情不工作的權利。

因爲我仍然在試用期間我會給這整個事情的機會,但我悲傷時,「樂趣」與它的工作正在減少......

對不起,長職位,但只有需要說:)

0

我有同樣的問題,我已經做了解決它,包括刪除佈局,並再次添加它,即使使用不同的名稱。

我想通了,我搞砸了方法,並忘記了override關鍵字。這個修復後,它工作得很好。