Gur*_*uru 9 android android-fragments
我知道这样的类似问题已得到解答,但我似乎完成了教程建议和其他帖子的阅读,但我仍然得到了Inflator错误.不确定我做错了什么.请检查代码.非常感谢.
编辑:我在一个活动中有两个片段.我在一个片段中有一个按钮,在另一个片段中有一个textview.我试图理解片段是如何工作的,所以我在阅读文档后自己制作了这段代码.当按钮在一个片段中被触发时,它会向活动中的另一个片段发送一个值.我无法让片段膨胀
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));
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我也试图支持pre-honey comb版本,我想我正在导入所有支持库.
尝试用 android.support.v4.app.Fragment 替换 xml 中的片段
编辑:当您完成 onCreateView 中的视图(即仅一次)时,也尝试调用 super 。在开始时删除对 super 的调用,看看是否有帮助
| 归档时间: |
|
| 查看次数: |
32275 次 |
| 最近记录: |