Est-il possible d'obtenir SomeFragment via une interface? Je ne veux pas utiliser FragmentManager, car dans mon code original MainActivity est un fragment.Comment utiliser Butterknife pour obtenir une référence au fragment 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");
}
}
mises en page:
<?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>
FATAL: principale EXCEPTION processus: com.tamtam.myapplication, PID: 29138 java.lang.RuntimeException: Impossible de démarrer l'activité ComposantInfo {com. tamtam.myapplication/com.tamtam.myapplication.MainActivity}: java.lang.NullPointerException: Tentative d'invocation de la méthode d'interface 'void com.tamtam.myapplication.MainActivity $ F ragmentCallback.test() » sur une référence d'objet null à android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2665) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2726) à androïde. app.ActivityThread.-wrap12 (ActivityThread.java) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1477) à android.os.Handler.dispatchMessage (Handler.java:102) à Android. os.Looper.loop (Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6119) à java.lang.reflect.Method.invoke (Native Method) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) à com.android.internal.os.ZygoteInit. principal (ZygoteInit.java:776) causés par: java.lang.NullPointerException: tentative d'invoquer l'interface méthode 'vide com.tamtam.myapplication.MainActivity $ FragmentCallback.test()' sur une référence d'objet null à 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) à android.os.Looper.loop (Looper.java:154) at android.app.Activi tyThread.main (ActivityThread.java:6119)
thnx @lelloman c'est ce que je cherchais. Butterknife devrait avoir cette fonctionnalité par défaut :). –