标签: android-fragments

更改屏幕方向时,我的ListPreference不会保留值

我已经坚持了几天,尝试了不同的解决方法.当我更改屏幕方向时,首选项摘要会丢失其值.

我有一个自定义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)

android android-fragments

0
推荐指数
1
解决办法
1423
查看次数

替换片段显示空白屏幕

我想替换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()通话结束后,旧片段消失,显示空白屏幕几毫秒,然后显示新片段.

有谁知道我怎么能避免在交易过程中显示这个空白屏幕?

谢谢.

android android-fragments

0
推荐指数
1
解决办法
1804
查看次数

Android CursorLoader无法在Fragment中运行

我有一个实现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,因为我不是为应用程序的那些部分编写代码.我错过了一些明显的东西吗?

android android-fragments android-cursorloader

0
推荐指数
1
解决办法
925
查看次数

我是如何阻止使用LayoutInflater()抛出IllegalStateExceptions的?inflate(int resource,ViewGroup root,boolean attachToRoot)?

我最近在设置一个包含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

0
推荐指数
1
解决办法
96
查看次数

是否可以从fragmentActivity扩展并同时扩展ActionBarActivity?

我有一个扩展的活动FragmentActivity(使用Android Maps API v2),但我需要对其进行更改ActionBar,并且我总是扩展ActionBarActivity以更改此类更改.
我知道不能太延长,但我可以扩展和编辑FragmentActivityActionBar

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)

android extends android-fragments android-actionbar

0
推荐指数
1
解决办法
179
查看次数

无法从类型Activity错误中对非静态方法findViewById(int)进行静态引用

嗨即时通讯在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)

android android-fragments

0
推荐指数
1
解决办法
1446
查看次数

Webview Inside Fragment:如何禁用在浏览器中打开?

我有这个代码,它可以正常打开一个网页:

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 webview android-fragments

0
推荐指数
1
解决办法
3148
查看次数

嵌套片段在屏幕旋转后存活

我在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只记录方法调用.这是我旋转屏幕时看到的.

当Activity最初出现时

ParentFragment? onAttach(): ParentFragment{420d0a98 #0 id=0x7f060064} …
Run Code Online (Sandbox Code Playgroud)

android rotation android-fragments android-nested-fragment

0
推荐指数
1
解决办法
2890
查看次数

Android:textview onclick和点击按钮有什么不同?

我对TextView和Button的看法存在疑问.我知道TextView和Button的基本功能,但仍需要清楚onClickListener功能.两个视图都具有setOnclickListener函数.TextView和Button onClick时编译器如何处理这个问题?

android android-intent android-layout android-fragments android-activity

0
推荐指数
1
解决办法
722
查看次数

如何将日期选择器中选择的日期传递给包含对话框片段的活动?

我已经向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)

android android-fragments

0
推荐指数
1
解决办法
3648
查看次数