我想将一个片段添加到以编程方式实现其布局的Activity.我查看了Fragment文档,但没有很多示例描述我需要的内容.这是我尝试编写的代码类型:
public class DebugExampleTwo extends Activity {
private ExampleTwoFragment mFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
if (savedInstanceState == null) {
mFragment = new ExampleTwoFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(frame.getId(), mFragment).commit();
}
setContentView(frame);
}
}
Run Code Online (Sandbox Code Playgroud)
...
public class ExampleTwoFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
Button button = new Button(getActivity());
button.setText("Hello There");
return button;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码编译但在开始时崩溃,可能是因为我FragmentTransaction.add()的错误.这样做的正确方法是什么?
在Ice Cream Sandwich中,当有一个包含EditText的Activity时,即使用户离开Activity,EditText也会保留Activity的Context.为了证明这一点,我创建了TestLeakActivity,它分配了一个大字节数组.由于Activity的Context不会被垃圾收集,因此字节数组会在堆上累积,最终导致OutOfMemoryError.您可以使用DDMS堆工具观察堆增长,并且可以通过查看Eclipse MAT中的HPROF文件来跟踪对EditText类的未完成引用.要创建内存泄漏,请进入LaunchActivity,然后继续启动并退出TestLeakActivity.
LaunchActivity.java
package com.example.testleakproject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
public class LaunchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("Start TestLeakActivity");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LaunchActivity.this, TestLeakActivity.class);
startActivity(intent);
}
});
ViewGroup container = ((ViewGroup) findViewById(android.R.id.content));
container.addView(button);
}
}
TestLeakActivity.java
package com.example.testleakproject; import android.app.Activity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.EditText; …
我LayoutTransition在Honeycomb 尝试新课程.我已经设置了一个动画,View当它添加到一个时,它会滑动到位ViewGroup.我注意到视图首次渲染和LayoutTransition.APPEARING动画开始之间有一点延迟(大约20ms).换句话说,在屏幕上出现视图后,它会在空中停留片刻,然后开始动画到位.您甚至可以在ApiDemos示例项目中注意到这一点.在布局动画示例中,在ViewGroup开始播放动画之前总会有延迟.我甚至尝试将其他LayoutTransition动画设置为null,或者最终给它们设置非常短的持续时间,但APPEARING动画仍然会延迟.这是我的代码:
public class DebugExampleFour extends Activity {
private int numButtons = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.debug_example_four);
final ViewGroup frame = (ViewGroup) findViewById(R.id.frame_container);
LayoutTransition transitioner = new LayoutTransition();
Animator appearingAnimation = ObjectAnimator.ofFloat(null, "translationX", 600, 0);
appearingAnimation.setDuration(45);
appearingAnimation.setStartDelay(0);
appearingAnimation.setInterpolator(new DecelerateInterpolator());
appearingAnimation.addListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator anim) {
View view = (View) ((ObjectAnimator) anim).getTarget();
view.setTranslationX(0f);
}
});
transitioner.setAnimator(LayoutTransition.APPEARING, appearingAnimation);
Animator dummyAnimation …Run Code Online (Sandbox Code Playgroud) 我最近开始上学两个专注于网络的课程,一个关于分布式系统,另一个关于计算机网络.在完成这两个类的第一个实验之后,我现在对C和Java的网络协议和套接字概念有了很好的理解.
现在,我正试图超越基本概念,在通信类和对象设计,网络设计模式,中间套接字/流管理约定,重要库以及C或OO语言中的通用*nix网络编程中间技术方面变得更好.
您能否建议您获得成功的资源?
android ×3
android-4.0-ice-cream-sandwich ×1
animation ×1
layout ×1
linux ×1
memory-leaks ×1
networking ×1
unix ×1