AMH*_*AMH 0 android android-layout android-fragments
我有这样的主要布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_showdetails"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_marginLeft="110dip"
android:layout_marginTop="15dip"
android:text="Show Details" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:id="@+id/my_parent_layout"
>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我试图使用这个类包com.appnetics调用my_parent_layout中的另一个活动;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.Button;
public class FragmenttestActivity extends FragmentActivity {
Button LogIn = null ;
final FragmentManager fragmentManager = getSupportFragmentManager() ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LogIn = (Button) findViewById(R.id.btn_showdetails);
LogInEvent() ;
}
public void LogInEvent(){
LogIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
details fragment = new details();
fragmentTransaction.add(R.id.my_parent_layout, fragment);
fragmentTransaction.commit();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
细节布局是:
<?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/date_time_label"
android:layout_centerVertical="true"
android:layout_marginLeft="200dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32dp"
android:textStyle="bold"
android:text="time_label"
/>
<TextView
android:id="@+id/last_view_time"
android:layout_toRightOf="@+id/date_time_label"
android:layout_alignBaseline="@+id/date_time_label"
android:layout_marginLeft="8dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="32dp"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
并且布局代码是/*$ Id:$*/
package com.appnetics;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* DateTime
*/
public class details extends Fragment {
private static String getDateTimeString(Date time) {
return new SimpleDateFormat("d MMM yyyy HH:mm:ss")
.format(time);
}
private final String time = getDateTimeString(new Date());
/** @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) */
@Override
public View onCreateView(
LayoutInflater inflater,
ViewGroup container,
Bundle b)
{
View view = inflater.inflate(
R.layout.details,
container,
false); //!!! this is important
((TextView) view.findViewById(R.id.last_view_time))
.setText(time);
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当点击按钮时,没有任何显示,任何想法在我的代码中有什么问题
开始吧!
在您的详细信息XML:
android:layout_toRightOf="@+id/date_time_label"
android:layout_alignBaseline="@+id/date_time_label"
Run Code Online (Sandbox Code Playgroud)
这两个标签用于相对布局,布局的父级必须是相对类型才能工作.
android:layout_centerVertical="true"
Run Code Online (Sandbox Code Playgroud)
此标记也不正确,如果要将文本居中于textview中,可以使用两种方法或在textView中包装内容并在其父级中设置中心或使用:
android:gravity="right"
android:width="fill_parent"
Run Code Online (Sandbox Code Playgroud)
这将是detail_fragment.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/date_time_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32dp"
android:textStyle="bold"
android:text="time_label"
/>
<TextView
android:id="@+id/last_view_time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="view time"
android:textSize="32dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在main.xml上,您可以多次声明架构!应该在根布局上声明一次.
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
Run Code Online (Sandbox Code Playgroud)
所以main.xml将是......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:id="@+id/add_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<LinearLayout
android:id="@+id/fragment_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
片段是在其类中声明的元素并应用其xml.
public class DetailsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment, container, false);
}
}
Run Code Online (Sandbox Code Playgroud)
在主要活动中将其添加到持有者布局:
public class FragmentSimpleTestActivity extends FragmentActivity {
private Button addFragment;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final FragmentManager fragmentManager = getSupportFragmentManager();
addFragment = (Button) findViewById(R.id.add_fragment);
addFragment.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
DetailsFragment fragment = new DetailsFragment();
fragmentTransaction.add(R.id.fragment_holder,fragment, "MY_FRAG");
fragmentTransaction.commit();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
fragmentTransaction.add具有参数非常重要
1:保存片段的视图的id.2:片段对象.3:用于查找堆栈中的片段的标记.
就这样 :)
享受你的碎片!您还可以在添加或删除动画时设置动画.
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |