我已经坚持了几天,尝试了不同的解决方法.当我更改屏幕方向时,首选项摘要会丢失其值.
我有一个自定义ListPreference,当用户点击时,会为好友弹出两个选项 - 我自己和其他一些(在实际程序中,用户从联系人中选择一个好友).
我将摘要设置为所选好友的电子邮件地址.
点击首选项弹出列表首选项,根据点击的内容,显示我自己,或联系选择器以选择好友.

"我自己"被选中

翻转手机失去了好友

这是一个剥离的工作程序,以显示要点.
class BuddyPreference2
public class BuddyPreference2 extends ListPreference {
String buddy;
private static final String TAG = "REGU";
public BuddyPreference2(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
if (positiveResult) {
persistString((String) buddy);
}
super.onDialogClosed(positiveResult);
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
super.onSetInitialValue(restoreValue, defaultValue);
if (restoreValue) {
// Restore existing state
buddy = this.getPersistedString("none set");
} else {
// Set default state from the XML …Run Code Online (Sandbox Code Playgroud) 我想替换Fragment使用FragmentTransaction.它工作正常但在重新安置期间,Android在显示新内容之前显示一个非常难看的空白屏幕Fragment
代码是:
FragmentManager mng = getSupportFragmentManager();
FragmentTransaction transac = mng.beginTransaction();
transac.replace(R.id.contentframe, myFragment, CUSTOM_TAG); // replace current fragment by myFragment
transac.commit();
Run Code Online (Sandbox Code Playgroud)
commit()通话结束后,旧片段消失,显示空白屏幕几毫秒,然后显示新片段.
有谁知道我怎么能避免在交易过程中显示这个空白屏幕?
谢谢.
我有一个实现LoaderManager.LoaderCallbacks接口的FragmentActivity,我想把它改成一个Fragment,这样我就可以在我的splashscreen后台启动它来从我的数据库中获取信息.但是,当我将FragmentActivity更改为Fragment时,我在onCreateLoader中出错:
public class CursorLoaderTest extends Fragment implements
LoaderManager.LoaderCallbacks<Cursor> {
...
...
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1)
{
// Grab URI corresponding with menuItem table
Uri CONTENT_URI = TabletContentProvider.MENU_ITEM_CONTENT_URI;
// THIS IS WHERE THE ERROR IS
return new CursorLoader(this, CONTENT_URI, null, null, null, null);
}
Run Code Online (Sandbox Code Playgroud)
它希望我将CursorLoader对象构造函数更改为:
CursorLoader(Context);
Run Code Online (Sandbox Code Playgroud)
这显然是行不通的.我正在与一个团队合作开展一个项目,我负责数据库操作,所以我不太熟悉Fragments/FragmentActivities,因为我不是为应用程序的那些部分编写代码.我错过了一些明显的东西吗?
我最近在设置一个包含3个片段的viewpager时遇到了一个问题.当应用程序运行时,它崩溃了
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first
Run Code Online (Sandbox Code Playgroud)
以下是用于创建要传递给pageAdapter的片段列表列表的代码.
private Vector<Fragment> getFragments() {
Vector<Fragment> list = new Vector<Fragment>();
list.add(new Fragment1());
list.add(new Fragment2());
list.add(new Fragment3());
return list;
Run Code Online (Sandbox Code Playgroud)
除了使用不同布局创建的片段之外,每个片段基本相同.这是我对其中一个片段的原始代码.公共类Fragment1扩展Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = getActivity().getLayoutInflater().inflate(R.layout.fragment1, container);
return v;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我像这样运行它时,它一直与IllegalStateException崩溃.我发现问题来自于正在创建的片段.经过一些谷歌搜索后,我尝试将片段的代码更改为此.
公共类Fragment1扩展Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = getActivity().getLayoutInflater().inflate(R.layout.fragment1, container, false);
return v;
}
} …Run Code Online (Sandbox Code Playgroud) java android illegalstateexception android-fragments layout-inflater
我有一个扩展的活动FragmentActivity(使用Android Maps API v2),但我需要对其进行更改ActionBar,并且我总是扩展ActionBarActivity以更改此类更改.
我知道不能太延长,但我可以扩展和编辑FragmentActivity和ActionBar?
public class AMapsSi extends android.support.v4.app.FragmentActivity {
private GoogleMap mapa = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_amapssi);
//actionbar
ActionBar actionBar = **getSupportActionBar();**-->eclipse error mark
actionBar.setTitle(vg.getCiudad());
actionBar.setIcon(R.drawable.manu_perfil);
Drawable d=getResources().getDrawable(R.drawable.headeractionbar);
actionBar.setBackgroundDrawable(d);
Run Code Online (Sandbox Code Playgroud) 嗨即时通讯在eclipse上制作一个计算器,我正在按照这个教程完成所有内容,就像在视频中一样,但由于某些原因我得到这个"无法从类型活动中对静态方法findViewById(int)进行静态引用"错误
public PlaceholderFragment() {
int counter;
Button add, sub;
TextView display;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
counter = 0;
add = (Button) findViewById(R.id.bAdd);
sub = (Button) findViewById(R.id.bSub);
display = (TextView) findViewById(R.id.tvDisplay);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
counter += 1;
display.setText("Your total is " + counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method …Run Code Online (Sandbox Code Playgroud) 我有这个代码,它可以正常打开一个网页:
package com.example.fragmenttabs;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.app.Fragment;
public class FragmentTab2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragmenttab2, container, false);
String url = "http://example.com";
WebView view = (WebView)rootView.findViewById(R.id.webView2);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl(url);
return rootView;
}
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,当我点击该网页视图中的链接时,它会打开谷歌浏览器.如何禁用此行为?我想在同一个webview中打开它.未在Google Chrome中打开.谢谢.
我在Android中面临嵌套片段的问题.当我旋转屏幕时,嵌套片段以某种方式存活.我想出了一个示例来说明这个问题.
public class ParentFragment extends BaseFragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_parent, container);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getChildFragmentManager()
.beginTransaction()
.add(getId(), new ParentFragmentChild(), ParentFragmentChild.class.getName())
.commit();
}
@Override
public void onResume() {
super.onResume();
log.verbose("onResume(), numChildFragments: " + getChildFragmentManager().getFragments().size());
}
}
public class ParentFragmentChild extends BaseFragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_child, null);
}
}
Run Code Online (Sandbox Code Playgroud)
BaseFragment只记录方法调用.这是我旋转屏幕时看到的.
ParentFragment? onAttach(): ParentFragment{420d0a98 #0 id=0x7f060064} …Run Code Online (Sandbox Code Playgroud) 我对TextView和Button的看法存在疑问.我知道TextView和Button的基本功能,但仍需要清楚onClickListener功能.两个视图都具有setOnclickListener函数.TextView和Button onClick时编译器如何处理这个问题?
android android-intent android-layout android-fragments android-activity
我已经向MainActivity添加了一个带有日期选择器的对话框片段,它工作正常.我现在想将使用日期选择器选择的日期传递给MainActivity调用的新活动.所以我使用意图在MainActivity和新活动之间进行通信.
但是,我如何才能将从对话框片段中选择的日期传递给MainActivity?
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
public static String formattedDate = "com.example.myfirstapp.DATEOB";
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) …Run Code Online (Sandbox Code Playgroud)