2017-09-27 127 views
0

我试图从对话框listActivity更改片段

选择这个项目我listActivity.cs下课后改变目前的片段:这里

[Activity( Theme = "@android:style/Theme.Dialog" , Label ="Number list") ] 
    class NumberListActivity : ListActivity 
    { 
     string[] data; 
     ArrayAdapter adapter; 
     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 

      this.data = Intent.GetStringArrayExtra("list_numbers"); 
      adapter = new ArrayAdapter(this, Resource.Layout.specific_contact_number_list_layout, data); 
      ListAdapter = adapter; 
     } 
     protected override void OnListItemClick(ListView l, View v, int position, long id) 
     { 
      base.OnListItemClick(l, v, position, id); 


      //Intent callFragment = new Intent(this, typeof(barMenu)); 
      //callFragment.PutExtra("callNumber", data[position]); 
      //StartActivity(callFragment); 

      ISharedPreferences preferences = GetSharedPreferences(SignInActivity.userSessionPref, FileCreationMode.Private); 
      String UserNamevalueSession = preferences.GetString("UserNamevalue", ""); 
      String UserphonevalueSession = preferences.GetString("Userphonevalue", ""); 
      CallService.phone.Connect(data[position], UserphonevalueSession); 
      DateTime now = DateTime.Now; 
      SqliteDB db = new SqliteDB(); 
      db.Insert(data[position], now.ToString()); 


      var frag = new MainActivity(); 
      FragmentManager.BeginTransaction().Replace(Resource.Id.conent_fragment, frag).Commit(); 
      Finish(); 
     } 
    } 

一切正常,非常以及我只需要更改片段后,单击项目

我试过

var frag = new MainActivity(); 
FragmentManager.BeginTransaction().Replace(Resource.Id.conent_fragment, frag).Commit(); 

但它给我

12月9日至27日:57:00.247 E/AndroidRuntime(11446): java.lang.IllegalArgumentException异常:未找到ID视图0x7f080079 (TurkeyanaCall.TurkeyanaCall:ID/conent_fragment),用于片段 MainActivity {4b067018#0的id = 0x7f080079}

specific_contact_number_list_layout.xmal代码

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/number_list" 
    android:textColor="#37c837" 
    android:textSize="20dip" 
    android:textStyle="italic" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft ="20dp" 
    android:padding ="10dp" 
      /> 

这是包含我想改变其命名为bar_menu.xmal

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    android:id="@+id/maintActivity_drawerlayout"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:id="@+id/linearView"> 
     <fragment 
      class="TwilioClientTest.Android.MainMenuFragment" 
      android:id="@+id/conent_fragment" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" /> 
    </LinearLayout> 
    <android.support.design.widget.NavigationView 
     android:id="@+id/maintActivity_navigationView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@drawable/shadow" 
     app:menu="@menu/left_menus" 
     app:theme="@style/ThemeOverlay.AppCompat.Light" /> 
</android.support.v4.widget.DrawerLayout> 
+0

能否请您发布'NumberListActivity'和XAML代码的详细代码?所以我们可以知道你想改变哪个片段? –

+0

我添加了我的xaml页面布局代码 –

+0

即时通讯从android.support.v4.widget.DrawerLayout更改片段其作品,但我有电话簿在我的应用程序,我想要点击联系人名称时,我希望它拨打联系人并移动到调用片段,我可以打电话,因为它的调用使用服务,但我希望在调用期间改变片段 –

回答

1

一些事情出错这里的片段布局。

首先,您尝试将活动用作片段。

var frag = new MainActivity();

其次,默认情况下ListActivity为您设置与包括一个ListView内容视图。因此没有conent_fragment视图。

如果你想只显示在MainActivity可以更换

var frag = new MainActivity(); 
FragmentManager.BeginTransaction().Replace(Resource.Id.conent_fragment, frag).Commit(); 

随着

StartActivity(typeof(MainActivity));

如果你真的想使用你的片段将不得不改变一些东西。如果是这种情况,我可以更新我的答案。

编辑的片段

创建一个名为number_list

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/number_list_content" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </ListView> 
</FrameLayout> 

这里这重要的是要增加一个ListView用id android:id="@android:id/list"布局。这将取代默认值。

内。然后你OnCreate添加SetContentView(Resource.Layout.number_list);

然后,当你想展示的片段

var frag = new MainActivity(); 
FragmentManager.BeginTransaction().Replace(Resource.Id.number_list_content, frag).Commit(); 
+0

我正在开发的应用程序,所以我把主要活动片段 MainActivity现在是片段不活动 –

+0

我想要使用片段 和我现在的mainActivity是barMenu.cs –

+0

我做了所有这些已经是我的问题是我想从另一个类改变片段目前我从NavigationView项目中很好地改变片段,但现在我需要在项目后再次改变片段点击 我的问题是我不能使用FragmentManager在另一个类或接收器内 –