相关疑难解决方法(0)

如何关闭Android中屏幕旋转的BluetoothSocket?

我正在制作一个使用蓝牙连接的应用程序.我打电话蓝牙连接onCreate()和关闭它onDestroy()MainActivity:

// Bluetooth
private Bluetooth bt;
private boolean registered = false;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    bt = new Bluetooth(this);
    bt.enableBluetooth();
    bt.setCommunicationCallback(this);
    bt.connectToName(bt.getBluetoothDevice(this));
    IntentFilter filter = new    IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
    registerReceiver(mReceiver, filter);
    registered = true;
}

@Override    
public void onDestroy() {
    super.onDestroy();
    if(registered) {
        unregisterReceiver(mReceiver);
        registered=false;
    }
    bt.removeCommunicationCallback();
    bt.disconnect();
    if (handler != null && runnable != null) {
        handler.removeCallbacks(runnable);
    }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序还支持LANDSCAPE和PORTRAIT模式(使用两种不同的布局).当屏幕旋转时,由于布局不同,MainActivity调用onCreate()onDestroy功能.出于这个原因,我收到以下错误:

@@@ ABORTING: INVALID HEAP ADDRESS …
Run Code Online (Sandbox Code Playgroud)

sockets android bluetooth android-activity android-bluetooth

9
推荐指数
1
解决办法
579
查看次数

旋转时调用DatePickerDialog onDateSet

我正在使用DialogFragment在onCreateDialog()中返回DatePickerDialog.我已将dateSetListener设置为DialogFragment(下面的示例中为"this"),除了在屏幕旋转发生时调用onDateSet()时,一切正常,这是不可取的.如何在旋转屏幕时让onDateSet不被调用?

我的DialogFragment

public static class DateDialogFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener{

    public static DateDialogFragment newInstance() {
        return new DateDialogFragment();
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new DatePickerDialog(getActivity(), this, 2012, 11, 19);
    }

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
        //This is called when screen rotated, which I dont want
        Toast.makeText(getActivity(), "Year: "+year+" Month: "+monthOfYear+" Day: "+dayOfMonth, Toast.LENGTH_SHORT).show();
    }

}
Run Code Online (Sandbox Code Playgroud)

这就是我所说的

if(getActivity()!=null){
    FragmentManager fm = getActivity().getSupportFragmentManager();
    DialogFragment newFragment = DateDialogFragment.newInstance();
    newFragment.show(fm, "dialog");
}
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-fragments

8
推荐指数
2
解决办法
1564
查看次数

尝试commitAllowingStateLoss时FragmentManager NullPointerException

上下文:我有Activitya Fragment和3 InnerFragments.当Fragment onDestroy()被调用时,我想从取下内片段FragmentManager.代码来自onDestroy()下方.

问题: FragmentManager投掷NullPointerException,可能在commitAllowingStateLoss()被调用时.我不明白为什么.

@Override
public void onDestroy()
{
    super.onDestroy();
    if (getFragmentManager().findFragmentById(R.id.fragment_framelayout_left) != null)
    {
        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.remove(mLeftFragment);
        fragmentTransaction.commitAllowingStateLoss();
    }
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

02-11 12:15:14.162: E/AndroidRuntime(25911): FATAL EXCEPTION: main
02-11 12:15:14.162: E/AndroidRuntime(25911): java.lang.NullPointerException
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1419)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.os.Handler.handleCallback(Handler.java:725)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.os.Looper.loop(Looper.java:137)
02-11 12:15:14.162: E/AndroidRuntime(25911): …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-fragmentactivity

8
推荐指数
1
解决办法
1万
查看次数

在Orientation Change上再次重复Android Fragment Animation

在我的活动中,我使用以下代码添加了片段.

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.right_to_left_in, R.anim.right_to_left_exit,R.anim.left_to_right_in,R.anim.left_to_right_exit);
DetailsFragment newFragment = DetailsFragment.newInstance();
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");
ft.commit();
Run Code Online (Sandbox Code Playgroud)

片段正在进入,退出,正确播放动画.但是当我定位设备时,片段管理器正在尝试使用相同的动画添加片段.这看起来很奇怪.当用户定位设备时,我不想要动画.

我不想添加onConfigChanges='orientation'清单,因为我想在方向上更改片段的布局设计.

android android-fragments

8
推荐指数
1
解决办法
711
查看次数

主页按钮按下并等待后,Fragment中的类成员变为空

问题描述

我写的应用程序有3个片段.当我按下搜索按钮时,主片段活动有一个带搜索按钮的搜索框,调用下面的函数:

Fragments.values()[tabControl.getCurrentItem()].getFragment().search(tv.getText().toString(), MainActivity.this.getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我按下HOME按钮等待30分钟并重新启动应用程序,在我按下FragmentYellowPagesFragment应用程序中的搜索按钮后崩溃

lvYellowPages.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)

因为lvYellowPages在这种情况下是null,但在日志中我可以看到该onCreateView函数被调用.能帮帮我吗,我可以和你分享我的代码.


FragmentPagerAdapter

public class FragmentAdapter extends FragmentPagerAdapter {

    Fragments[] mFragments;

    public FragmentAdapter(FragmentManager fm) {
        super(fm);

        mFragments = Fragments.values();
    }

    public enum Fragments {

        Favorites(App.getStringByResId(R.string.favorites), new FragmentFavorites()),
        Categories(App.getStringByResId(R.string.categories), new FragmentCategories()),
        YellowPages(App.getStringByResId(R.string.yellow_pages), new FragmentYellowPages());

        Fragments(String title, BaseListFragment fragment) {
            this.mTitle = title;
            this.mFragment = fragment;
        }

        String mTitle;
        BaseListFragment mFragment;

        public String getTitle() {
            return mTitle;
        }

        public BaseListFragment getFragment() {
            return mFragment;
        }
    };

    @Override
    public CharSequence getPageTitle(int position) …
Run Code Online (Sandbox Code Playgroud)

java android android-lifecycle android-fragments

7
推荐指数
1
解决办法
1789
查看次数

Android-保留片段吗?

嗨,我有一个关于在重新创建Activity时保留片段的问题。我听说一种方法是在onCreate方法中使用setRetainFragment(true)。问题是-与在Activity中跟踪私有Fragment属性有什么不同,以便在活动的整个生命周期中我始终拥有相同的Fragment对象?谢谢!

lifecycle android fragment android-activity

5
推荐指数
1
解决办法
3292
查看次数

Android,App在屏幕旋转时崩溃,对话框打开

我的应用程序有一个对话框和两个活动,风景和肖像.

当我在其中一个活动中并且在对话框打开时旋转屏幕时,应用程序崩溃.

我应该怎样处理那不会发生的事情?

这是logcat输出:(空格表示事情开始向南)

11-15 15:56:25.322: D/AndroidRuntime(956): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
11-15 15:56:25.322: D/AndroidRuntime(956): CheckJNI is ON
11-15 15:56:26.342: W/ThrottleService(77): unable to find stats for iface rmnet0
11-15 15:56:26.382: D/AndroidRuntime(956): Calling main entry com.android.commands.pm.Pm
11-15 15:56:26.442: D/AndroidRuntime(956): Shutting down VM
11-15 15:56:26.452: D/dalvikvm(956): GC_CONCURRENT freed 101K, 78% free 463K/2048K, paused 1ms+1ms
11-15 15:56:26.462: D/dalvikvm(956): Debugger has detached; object registry had 1 entries
11-15 15:56:26.472: I/AndroidRuntime(956): NOTE: attach of thread 'Binder Thread #3' failed
11-15 15:56:27.112: D/AndroidRuntime(969): >>>>>> AndroidRuntime START …
Run Code Online (Sandbox Code Playgroud)

android dialog rotation

4
推荐指数
1
解决办法
3715
查看次数

方向改变后,片段对mActivity的引用变为null.片段状态维护无效

我的应用程序包含几个片段.到目前为止,我已将它们的引用存储在自定义的Application对象中,但我开始认为我做错了.

当我意识到我的片段对mActivity的所有引用在方向改变后变为null时,我的问题就开始了.因此,当我在方向更改后调用getActivity()时,会抛出NullPointerException.我已经检查过我的片段的onAttach()在调用getActivity()之前被调用,但它仍然返回null.

以下是我的MainActivity的剥离版本,它是我的应用程序中唯一的活动.

public class MainActivity extends BaseActivity implements OnItemClickListener,
        OnBackStackChangedListener, OnSlidingMenuActionListener {

    private ListView mSlidingMenuListView;
    private SlidingMenu mSlidingMenu;

    private boolean mMenuFragmentVisible;
    private boolean mContentFragmentVisible;
    private boolean mQuickAccessFragmentVisible;

    private FragmentManager mManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /*
         * Boolean variables indicating which of the 3 fragment slots are visible at a given time
         */
        mMenuFragmentVisible = findViewById(R.id.menuFragment) != null;
        mContentFragmentVisible = findViewById(R.id.contentFragment) != null;
        mQuickAccessFragmentVisible = findViewById(R.id.quickAccessFragment) != null;

        if(!savedInstanceState != null) {
            if(!mMenuFragmentVisible && mContentFragmentVisible) { …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-fragments android-memory

4
推荐指数
1
解决办法
6872
查看次数

Xamarin.Android中的默认构造函数

我是使用Xamarin.Android进行Android开发的新手,我想了解如何解决下一个问题.

有时,从后台恢复我的Android应用程序后,我面临的下一个错误: Unable to find the default constructor on type MainMenuFragment.MainMenuFragment使用应用程序NavigationDrawerActivity允许用户在应用程序中不同的片段之间切换.

为了解决这个问题,我MainMenuFragment在下一个链接中添加了一个默认构造函数:

  • Xamarin限制 - 2.1.缺少构造函数
  • 添加了默认构造函数,应该解决问题.

    public class MainMenuFragment : DialogFragment
    {
        readonly NavigationDrawerActivity navigationDrawer;
    
        #region Constructors
    
        public MainMenuFragment () {} // Default constructor...
    
        public MainMenuFragment (NavigationDrawerActivity navigationDrawer, IMenuType launchMenu = null)
        {
            if (navigationDrawer == null)
                throw new ArgumentNullException ("navigationDrawer");
    
            this.navigationDrawer = navigationDrawer;
            ...
    
        Fragment UpdateTopFragmentForCurrentMenu (Fragment newMenuRootFragment = null)
        {
            Fragment currentMenuRootFragment = navigationDrawer.CurrentFragment; // issued line.
    
    Run Code Online (Sandbox Code Playgroud)

但是现在在将来的某个时候,MainMenuFragment使用其默认构造函数初始化,并且在第一次尝试访问其navigationDrawer时,它会抛出System.NullReferenceException:

System.NullReferenceException: …
Run Code Online (Sandbox Code Playgroud)

default-constructor nullreferenceexception xamarin.android

4
推荐指数
1
解决办法
3124
查看次数

片段侦听器上的NullPointerException

我有一个ViewPager活动,在ViewPager适配器中我为每个位置提供Fragment.

一个示例Fragment是DebugFragment.我在下面写了源代码.

public class DebugFragment extends android.support.v4.app.Fragment {

private OnFragmentInteractionListener mListener;

public interface OnFragmentInteractionListener {
    void onFragmentInteraction(int someValue);
}

public static DebugFragment newInstance() {
    DebugFragment fragment = new DebugFragment();
    Bundle args = new Bundle();
    fragment.setArguments(args);
    return fragment;
}

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        mListener.onFragmentInteraction(0);
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LocalBroadcastManager.getInstance(getContext()).registerReceiver(mMessageReceiver,
            new IntentFilter("com.android.example.INITIAL_REQUEST"));
}

@Override
public void onDestroy() {
    LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mMessageReceiver);
    super.onDestroy();
}

@Override
public void onAttach(Context context) …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-fragments android-fragmentactivity fragment-lifecycle

4
推荐指数
1
解决办法
1341
查看次数

setRetainInstance(true)在android中的onCreate片段中

我没有在我的片段中保存任何上下文,所以我setRetainInstance(true)在UI片段中使用.谁能告诉我这是否是正确的方法?我们应该在哪里基本上调用setRetainInstance方法?我的意思onCreate还是onActivityCreated

android android-fragments

2
推荐指数
2
解决办法
6449
查看次数