невозможно добавить тег фрагмента в относительный макет - PullRequest
0 голосов
/ 28 августа 2018

Я хочу добавить тег в RelativeLayout для Activity. Но я получаю ошибки рендеринга.

fragment tag

Любая помощь о том, как решить?

Редактировать: Добавление стека трассировки аварии

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chandranichatterjee.mapapp/com.example.chandranichatterjee.myapplicationloc.MapsActivityNew}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2583)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2665)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1499)
        at android.os.Handler.dispatchMessage(Handler.java:111)
        at android.os.Looper.loop(Looper.java:207)
        at android.app.ActivityThread.main(ActivityThread.java:5767)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
     Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class fragment
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412)
        at android.app.Activity.setContentView(Activity.java:2204)
        at com.example.chandranichatterjee.myapplicationloc.MapsActivityNew.onCreate(MapsActivityNew.java:24)
        at android.app.Activity.performCreate(Activity.java:6322)}

Ответы [ 4 ]

0 голосов
/ 04 сентября 2018

Как подсказал @Nazariy Moshenskiy, мне нужно было добавить атрибут android:name в тег <fragment>.

Вот так выглядел мой макет (на случай, если кто-то столкнется с такой же проблемой в будущем).

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:cameraZoom="2"

    tools:context=".MapsActivityNew" />
0 голосов
/ 31 августа 2018

Я думаю, вам нужно добавить android:name="com.example.myapp.YourFragmentHere" внутри вашего фрагмента, чтобы определить класс Fragment, если вы собираетесь использовать тег <fragment>.

0 голосов
/ 31 августа 2018

Вы должны добавить android:name="com.example.YourFragmentHere внутри тега fragment, чтобы определить класс фрагмента. как это

<fragment  
android:id="@+id/fragment"
android:layout_width="match_parent"  
android:layout_height="match_parent"  
android:name="com.example.YourFragmentHere"  
/> 
0 голосов
/ 30 августа 2018

Как говорится в вашем сообщении об ошибке:

Тег <fragment> позволяет файлу макета динамически включать различные макеты во время выполнения. Во время редактирования макета конкретный используемый макет неизвестен. Вы можете выбрать, какой макет вы хотите просмотреть при редактировании макета.

Он не знает, что должен показать фрагмент, но его можно игнорировать, так как результат в конце концов знает это. У вас не может быть такого общего предварительного просмотра.

Edit:

Наиболее распространенные ошибки из опыта раздувания фрагмента:

с помощью:

public class MainActivity extends Activity {

вместо:

public class MainActivity extends FragmentActivity {

и наличие тега meta-data вне application в файле манифеста.

...