我想从活动(而不是片段类)更改片段textview。我该怎么办?我正在使用此代码:
public void startChat() {
FrameLayout layout = (FrameLayout)findViewById(R.id.container);
layout.setVisibility(View.VISIBLE);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.container, new ConversationFragment());
fragmentTransaction.commit();
viewPager.setVisibility(View.GONE);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayHomeAsUpEnabled(true);
TextView nameView=(TextView)findViewById(R.id.user_name);
nameView.setText("asd");
}
此代码加载conversation_fragment.xml并希望更改textview,但我的应用程序崩溃了。
这里是conversation_fragment.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#878787" >
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="dfgdfgdf"
android:textSize="20dp"
android:layout_centerInParent="true"
android:id="@+id/user_name"/>
<EditText
android:id="@+id/message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:text="Gönder"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="getFromUser"
android:layout_marginTop="40dp"
/>
</RelativeLayout>
答案 0 :(得分:3)
您可以使用findFragmentById
查找您的片段,并调用更改文字的公共方法
(ConversationFragment) getFragmentManager().findFragmentById(R.id.yourid);
或在创建类之前保留该类的实例,然后再将其添加到片段管理器
conv = new ConversationFragment()
fragmentTransaction.add(R.id.container, conv);
然后使用conv
或任何你称之为
修改强>
使用捆绑包将数据发送到片段
Bundle b = new Bundle()
b.putString("text",data)
conv.setArguments(b);
然后在你的片段中获取getArguments()
的参数并从包中提取数据然后根据需要使用
答案 1 :(得分:1)
你可以这样做
public class ConversationFragment extends Fragment {
private TextView nameView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.conversation_fragment, null);
nameView = (TextView) view.findViewById(R.id.user_name);
}
public void setText(String yourText){
nameView.setText(yourText);
}
}
并在您的活动调用方法 setText()
中ConversationFragment conv = new ConversationFragment();
conv.setText("asd");
最诚挚的问候。