저는 어댑터를 사용하여 그리드를 채우는 활동이 있습니다. 격자의 항목을 누르면 "NavbarFragment"에서 TextView의 텍스트를 변경하려고합니다.findViewById가 Fragment에 있고 (켜기) CreateView에 없습니다.
CategoryActivity.java :
GridView grid = (GridView) findViewById(R.id.gridlayout_grid);
grid.setAdapter(new GridAdapter(tiles));
CategoryActivity.xml 다음에 GridAdapter.java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical"
tools:context=".Activity.CategoryActivity">
<fragment android:name="app_a_tize.expressme.Fragment.NavbarFragment"
android:id="@+id/fragNavbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<GridView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:verticalSpacing="10dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:layout_gravity="center"
android:id="@+id/gridlayout_grid"/>
<fragment android:name="app_a_tize.expressme.Fragment.ConversationbarFragment"
android:id="@+id/fragConversation"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
OnClickListener를 : NavbarFragment.java에
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView textView = (TextView) v.findViewById(R.id.item_name);
String tileName = textView.getText().toString();
System.out.println("tileName" + tileName);
ConversationBarManager.getInstance().addWord(tileName);
NavbarFragment navbar = new NavbarFragment();
navbar.changeConversationBarString();
}
});
기능 :
public void changeConversationBarString(){
TextView conversationBar = (TextView) ?????.findViewById(R.id.conversationBar);
conversationBar.setText(ConversationBarManager.getInstance().getConversationBarString());
}
이 함수에서^프래그먼트에서 TextView 대화 막대의 텍스트를 변경하려고합니다. 하지만 TextView를 얻을 수없는 이유는 무엇이든 시도하기 때문에 NullPointer를 얻게되기 때문입니다. 왜냐하면 findViewById가 작동하지 않기 때문입니다.
findViewById에 대한 모든 질문은 onCreateView() 메소드에서 getView()를 사용할 수 있다고 말합니다.
내 질문은 : 그리드의 항목을 클릭하면 NavbarFragment 내 TextView의 텍스트 속성을 어떻게 변경할 수 있습니다.
당신은 사용자 정의 리스너 (인터페이스) 또는 EventBus를 사용할 수 있습니다. –
어떻게 창문에 붙어 있지 않은 것을 볼 수 있습니까? – k0sh
인터페이스를 사용하여 활동 또는 조각과 통신하십시오. –