【发布时间】:2014-03-26 07:23:38
【问题描述】:
在 Xamarin 中,如果我 Inflate 和 View,如何在 View 中设置 TextView 的文本?
我想编写一个应用程序,我可以在其中调用不同片段中的方法以在片段之间传递值并显示这些值。
这是我的MainActivity 代码:
public class MainActivity : FragmentActivity
{
string message;
FragmentOrange fragOrange;
FragmentGreen fragGreen;
FragmentRed fragRed;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.activity_main);
fragOrange = new FragmentOrange ();
fragGreen = new FragmentGreen ();
fragRed = new FragmentRed ();
List<Android.Support.V4.App.Fragment> fragments = new List<Android.Support.V4.App.Fragment>();
fragments.Add(fragOrange);
fragments.Add(fragGreen);
fragments.Add(fragRed);
MyPagerAdapter pageAdapter = new MyPagerAdapter(SupportFragmentManager, fragments);
var pager = FindViewById<ViewPager>(Resource.Id.myViewPager);
pager.Adapter = pageAdapter;
pager.SetCurrentItem (0, true);
fragOrange.SetMessage ("Fragment orange");
}
}
这是我的FragmentOrange 代码:
public class FragmentOrange : Android.Support.V4.App.Fragment
{
string message;
TextView textViewDisplay;
View view;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.Inflate(Resource.Layout.fragment_orange, container, false);
textViewDisplay = view.FindViewById<TextView>(Resource.Id.textViewDisplay);
return view;
}
public void SetMessage(string value)
{
message = value;
textViewDisplay.Text = value;
}
}
当我调用SetMessage 函数时,我收到以下错误:
对象引用未设置为对象的实例
在这行代码处:
textViewDisplay.Text = value;
这是我的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:id="@+id/textViewDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
提前致谢
【问题讨论】:
-
请用 log cat 编辑您的问题
标签: android android-layout xamarin android-view android-inflate