我在从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();
但它给了我
09-27 12: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 :(得分: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
的{{1}}。这将取代默认值。
然后在android:id="@android:id/list"
添加OnCreate
然后当你想要显示片段
SetContentView(Resource.Layout.number_list);