Ich weiß, ähnliche Fragen wie diese wurden beantwortet, aber ich habe getan, was das Tutorial vorgeschlagen und lesen von anderen Posts, aber immer noch ich den Inflator Error. Nicht sicher, was ich falsch mache. Bitte überprüfen Sie den Code. Danke vielmals.android.view.InflateException: Binäre XML-Dateizeile # 7: Fehler beim Aufblasen des Klassenfragments
Edit: Ich habe zwei Fragmente in einer Aktivität. Ich habe eine Schaltfläche in einem Fragment und eine Textansicht in der anderen. Ich versuche zu verstehen, wie Fragmente funktionieren, also habe ich diesen Code nach dem Lesen der Dokumentation selbst erstellt. Wenn die Schaltfläche in einem Fragment ausgelöst wird, sendet sie einen Wert an das andere Fragment in der Aktivität. Ich bin nicht in der Lage, das Fragment zu erhalten
MainActivity.java
import com.transport.mbtalocpro.PredictedTimeFragment.ButtonClickListener;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity implements ButtonClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void sendCounter(int count) {
TestFrag testF = (TestFrag) getSupportFragmentManager().findFragmentById(R.id.bottomHalf);
if(testF != null) testF.setCounter(String.valueOf(count));
}
}
PredictedTimeFragment.java
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
public class PredictedTimeFragment extends Fragment {
ButtonClickListener bListener;
public interface ButtonClickListener {
public void sendCounter(int count);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
try {
View view = inflater.inflate(R.layout.prediction_time, container, false);
Button button = (Button) view.findViewById(R.id.test);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
test(v);
}
});
} catch(InflateException e) {
e.printStackTrace();
System.out.println("Predicted Time Fragment");
}
return super.onCreateView(inflater, container, savedInstanceState);
}
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
bListener = (ButtonClickListener) activity;
} catch (ClassCastException e) {
System.out.println("must implemenet Listener");
}
}
public void test(View view) {
bListener.sendCounter(23);
}
}
TestFrag.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class TestFrag extends Fragment {
@Override
public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflator, container, savedInstanceState);
try {
View view = inflator.inflate(R.layout.test_frag, container, false);
} catch(InflateException e) {
e.printStackTrace();
System.out.println("Test Fragment");
}
return super.onCreateView(inflator, container, savedInstanceState);
}
public void setCounter(String textS) {
TextView text = (TextView) getView().findViewById(R.id.test1);
text.setText((String) textS);
}
}
aufzublasen
activity_main.xml
<?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:orientation="vertical">
<fragment
android:id="@+id/topHalf"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:name="com.transport.mbtalocpro.PredictedTimeFragment"/>
<fragment
android:id="@+id/bottomHalf"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:name ="com.transport.mbtalocpro.TestFrag"/>
</LinearLayout>
predicted_time.xml
<?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"
android:orientation="vertical" >
<Button
android:id="@+id/test"
android:text="Test"
android:layout_width="fill_parent"
android:layout_height="30dp"
/>
</LinearLayout>
test_frag.xml
<?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"
android:orientation="vertical" >
<TextView
android:id="@+id/test1"
android:layout_width="fill_parent"
android:layout_height="40dp"/>
</LinearLayout>
I pre-Wabe-Versionen zu unterstützen versuchen und Ich denke ich importiere al l die Unterstützungsbibliotheken.
Code herum werfen wird wahrscheinlich nicht jemanden dazu ermutigen, Ihnen zu helfen. Einige grundlegende Details wären großartig. – WarrenFaith
@WarrenFaith - Ich habe einige Details über den Code hinzugefügt. Das tut mir leid. Ich war in Eile. Vielen Dank. – Guru
Sie brauchen keine der Superaufrufe in Ihren Fragmenten über die Fahrt von onCreateView; gib einfach deine Ansicht zurück. – wkhatch