是否可以通過接口獲取SomeFragment?我不想使用FragmentManager,因爲在我的原始代碼中MainActivity是一個片段。如何使用Butterknife獲取對片段的引用xml
public class MainActivity extends AppCompatActivity {
@BindView(R.id.some_container)
FragmentCallback fragment;
public interface FragmentCallback {
void test();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragment.test();
}
}
public class SomeFragment extends Fragment implements FragmentCallback {
public SomeFragment() {
}
@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable final Bundle
savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_some, container, false);
ButterKnife.bind(this, view);
return view;
}
@Override
public void test() {
Log.d("" , "it works");
}
}
佈局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/some_container"
android:name="com.tamtam.myapplication.SomeFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
致命異常:主 工藝:com.tamtam.myapplication,PID:29138 了java.lang.RuntimeException:無法啓動活動 ComponentInfo {融爲一體。 tamtam.myapplication/com.tamtam.myapplication.MainActivity}: java.lang.NullPointerException:試圖調用接口方法 'void com.tamtam.myapplication.MainActivity $ F ragmentCallback.test()」 上在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在機器人空對象引用 。 app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) 在android.os.Handler.dispatchMessage(Handler.java:102) 的機器人。 os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit。主(ZygoteInit.java:776) 所致:顯示java.lang.NullPointerException:嘗試在 調用接口 方法 '無效 com.tamtam.myapplication.MainActivity $ FragmentCallback.test()' 上的 空對象引用 com.tamtam.myapplication.MainActivity.onCreate(MainActivity.java:21) at android.app.Activity.performCreate(Activity.java:6679) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) 在android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.Activi tyThread.main(ActivityThread.java:6119)
thnx @lelloman這就是我正在尋找的。 Butterknife默認應該有這個功能:)。 –