我正在尝试动态片段布局。
我正在使用2个xml文件:一个是main_layout
,另一个是fragment1
。
我使用了Log.i
所以我可以知道我的程序崩溃的位置,但它引用的是运行代码正常但它不会出现在main_layout上的fragment1。
这是我的代码:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/testFragment"
android:visibility="gone" >
</FrameLayout>
<?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"
android:id="@+id/fragmenta"
android:background="#F000F0">
<TextView
android:id="@+id/fragmentatext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragmenta 1" />
</LinearLayout>
这是我的Side_Fragment
扩展SherlockFragment
:
View view;
private final String TAG = "Side_Fragment";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragmenta, container, false);
Log.i(TAG,"fragment installed");
return view;
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
}
}
这是主要活动:
private final String TAG = "Main Activity";
FragmentManager fm = getSupportFragmentManager();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
Log.i(TAG,"OnCreate");
Button add = (Button) findViewById(R.id.button1);
Log.i(TAG,"called FragmentManager");
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.twitter:
Log.i(TAG,"Twitter is clicked");
// Check to see if the Fragment back stack has been populated // If not, create and populate the layout.
Fragment detailsFragment = (Side_Fragment)fm.findFragmentById(R.id.fragmenta);
Log.i(TAG,"called FragmentManager");
if (detailsFragment == null) {
Log.i(TAG,"pass ifstatment");
FragmentTransaction ft = fm.beginTransaction();
Log.i(TAG,"called FragmentTransaction");
Side_Fragment test = new Side_Fragment();
ft.add(R.id.testFragment,test);
Log.i(TAG,"called add");
ft.addToBackStack(null);
ft.commit();
Log.i(TAG,"called commit");
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
return true;
case R.id.facebook:
Log.i(TAG,"Facebook is clicked");
return true;
case R.id.refresh:
Log.i(TAG,"Refresh is clicked");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
final MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i(TAG,"onPause");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i(TAG,"onResume");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i(TAG,"onStart");
}
}
答案 0 :(得分:0)
您已将FrameLayout
宽度设置得有点小:android:layout_width="0dp"
。这将使人们无法看到。