Почему я получаю нулевое значение, пытаясь получить доступ к фрагментному представлению от родительской деятельности?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему я получаю нулевое значение, пытаясь получить доступ к фрагментному представлению от родительской деятельности?

Сообщение Anonymous »

Во -первых, я знаю, что есть много подобных вопросов об этом раньше, но ни один из них не отвечает на мой вопрос.public class MainActivity extends AppCompatActivity {
Car myCar = new Car();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction().add(R.id.buttonsContainer,myCar,"me").commitNow();
View v = myCar.getView(); // returns null
Button b = v.findViewById(R.id.submitButton); //throws an exception as I'm trying to execute the "findViewById" method on a null object , as the debugger say .
b.setText("It works !"); // it doesn't
}
}
< /code>

, и у меня есть фрагмент < /code>, который включает в себя одну кнопку со следующим кодом: < /strong> < /p>

public class Car extends Fragment {
View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.car, container, false);
return rootView;
}
}
< /code>

он ничего не делает, кроме как показывает макет, который соответствует ему.





и вот мой фрагмент xml code:







< /code>

Что я пытаюсь сделать, так это в основном я хочу изменить текст кнопки, когда она нажимается на что -то другое (это должно произойти на родительскую деятельность < /code>. < /p>

Я уже знаю, как сделать это в фрагментной активности). MainActivity и не из фрагмента Activity , но всякий раз, когда я пытаюсь получить доступ к этому фрагменту из основной активности я получаю значение null (не имеет значения, пытаюсь ли я получить ссылку на его активность или view как в mycar.getactivity () или mycar.getView () () () () () () () () () () () () () () () () () () () () () () () (). /> Заранее спасибо. < /p>

logcat: < /p>

AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 27060
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.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.main(ZygoteInit.java:776)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.myapplication.MainActivity.onCreate(MainActivity.java:23)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.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.main(ZygoteInit.java:776)


Подробнее здесь: https://stackoverflow.com/questions/448 ... om-the-par
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»