【问题标题】:startactivity in onClick button inside of navigationdrawer not work导航抽屉内的onClick按钮中的startactivity不起作用
【发布时间】:2015-05-09 03:08:22
【问题描述】:

我想从导航抽屉内的 HomeF.java 为 MapaQRF.java 创建一个 startActivity。 我的意思是,我希望 onclick(按钮)与 onNavigationDrawerItemSelected (在 MapaQRF 位置)一样

fragment_home.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="cl.bikepurranque.www.bikeqrf.HomeF">

    <Button
        android:layout_width="190dp"
        android:layout_height="wrap_content"
        android:text="Mapa Paraderos QR"
        android:id="@+id/btnMap"
        android:layout_gravity="center_horizontal|top"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="40dp"
        android:onClick="onClickMap"/>
</FrameLayout>

HomeF.java(这就是问题所在)

public void onClickMap(View view){
    Intent intent = new Intent(this.getActivity(), MapaQRF.class);
    startActivity(intent);
}

NavDrawer.java

@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
    FragmentManager fragmentManager = getSupportFragmentManager();
    Fragment fragment = null;

    switch (position){
        case 0:
            fragment = new MapaQRF();
            fragmentManager.beginTransaction()
                    .replace(R.id.container, fragment)
                    .commit();
            break;
        case 1:
            fragment = new DetectarQRF();
            fragmentManager.beginTransaction()
                    .replace(R.id.container, fragment)
                    .commit();
            break;
        case 2:
            Intent intent = new Intent(this, Login.class);
            startActivity(intent);
            break;
    }

}

已修复

问题是当我需要调用片段时调用了一个活动。

已移除:按钮 (fragment_home.xml) 上的“android:onClick="onClickMap"”

在 HomeF.java 中添加 (onCreateView) 方法
btnMap = (Button) rootView.findViewById(R.id.btnMap);

btnMap.setOnClickListener(this);

@Override
public void onClick(View v) {
    if (v == btnMap){
        FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        android.support.v4.app.Fragment fragment = null;
        fragment = new MapaQRF();
        fragmentManager.beginTransaction()
                .replace(R.id.container, fragment)
                .commit();
    }
}

【问题讨论】:

  • 发布fragment_home.xml的完整代码
  • 你的问题好像有点不清楚
  • 发布您的崩溃日志。
  • 谢谢,日志帮我找到了具体的错误
  • 请将您的解决方案移至自己的答案。

标签: android onclick fragment navigation-drawer


【解决方案1】:

尝试使用getActivity()

public void onClickMap(View view){
    Intent intent = new Intent(getActivity(), MapaQRF.class);
    getActivity().startActivity(intent);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多