片段内部活动的片段对话框

时间:2013-06-04 15:13:36

标签: android android-dialogfragment

我想要一些帮助我对android变得疯狂。在这里你有mi代码和logcat掉线,我希望你能给我指路。

为了更好地理解,我正在寻找的是;在活动“concejos”中,有滑动标签,每个标签都是一个像片段一样的布局,在这些布局中有按钮,它们会打开一个带有图像,文本和关闭按钮的对话框片段。

CODE

public class Concejos extends FragmentActivity implements ActionBar.TabListener {

AppSectionsPagerAdapter mAppSectionsPagerAdapter;
ViewPager mViewPager;

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

    mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager());

    final ActionBar actionBar = getActionBar();
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mAppSectionsPagerAdapter);
    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            // When swiping between different app sections, select the corresponding tab.
            // We can also use ActionBar.Tab#select() to do this if we have a reference to the
            // Tab.
            actionBar.setSelectedNavigationItem(position);
        }
    });

    // For each of the sections in the app, add a tab to the action bar.
    for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) {
        actionBar.addTab(
                actionBar.newTab()
                        .setText(mAppSectionsPagerAdapter.getPageTitle(i))
                        .setTabListener(this));
    }
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    mViewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {
    public AppSectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new SectionFragmentCocina();
            case 1:
                return new SectionFragmentComedor();
            case 2:
                return new SectionFragmentCuartoLavado();
            case 3:
                return new SectionFragmentBano();
            default:
                return new SectionFragmentCocina();
         }  
    }

    @Override
    public int getCount() {
        return 4;
    }
    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
        case 0:
            return "Cocina";
        case 1:
            return "Comedor";
        case 2:
            return "Cuarto de lavado";
        case 3:
            return "Baño";
        }
        return null;
    }
}


public static class SectionFragmentCocina extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_cocina, container, false);
        // Demonstration of a collection-browsing activity.
        rootView.findViewById(R.id.btnLavavajilla).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Context context = null;
                /*Intent intent = new Intent(getActivity(), SectionFragment1.class);
                startActivity(intent);*/
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.fragment_dialog);
                dialog.setTitle("Title...");

                // set the custom dialog components - text, image and button
                TextView text = (TextView) dialog.findViewById(R.id.txtTexto);
                text.setText("Android custom dialog example!");
                ImageView image = (ImageView) dialog.findViewById(R.id.ivImagen);
                image.setImageResource(R.drawable.ic_launcher);

                Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });

                dialog.show();
            }
        });
        return rootView;
     }
}


public static class SectionFragmentComedor extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_comedor, container, false);
        // Demonstration of a collection-browsing activity.
        /*rootView.findViewById(R.id.btnLavavajilla).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), SectionFragment2.class);
                startActivity(intent);
            }
        });*/
        return rootView;
     }
}

public static class SectionFragmentCuartoLavado extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_cuarto_lavado, container, false);
        // Demonstration of a collection-browsing activity.
        /*rootView.findViewById(R.id.btnLavavajilla).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), SectionFragment3.class);
                startActivity(intent);
            }
        });*/
        return rootView;
     }
}

public static class SectionFragmentBano extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_bano, container, false);
        // Demonstration of a collection-browsing activity.
        /*rootView.findViewById(R.id.btnLavavajilla).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), SectionFragment4.class);
                startActivity(intent);
            }
        });*/
        return rootView;
     }
}

}

logcat的

06-04 10:05:59.111: D/dalvikvm(560): GC_FOR_ALLOC freed 99K, 3% free 6972K/7171K, paused 133ms
06-04 10:05:59.151: I/dalvikvm-heap(560): Grow heap (frag case) to 8.370MB for 1536016-byte allocation
06-04 10:05:59.331: D/dalvikvm(560): GC_CONCURRENT freed 1K, 3% free 8471K/8711K, paused 9ms+35ms
06-04 10:06:00.581: D/gralloc_goldfish(560): Emulator without GPU emulation detected.
06-04 10:06:00.781: W/TextLayoutCache(560): computeValuesWithHarfbuzz -- need to force to single run
06-04 10:07:37.460: D/dalvikvm(560): GC_CONCURRENT freed 20K, 2% free 8923K/9095K, paused 10ms+53ms
06-04 10:07:42.911: D/dalvikvm(560): GC_FOR_ALLOC freed 99K, 3% free 8965K/9223K, paused 72ms
06-04 10:07:42.962: I/dalvikvm-heap(560): Grow heap (frag case) to 10.071MB for 1280016-byte allocation
06-04 10:07:43.261: D/dalvikvm(560): GC_CONCURRENT freed 9K, 3% free 10205K/10503K, paused 45ms+8ms
06-04 10:07:43.912: D/dalvikvm(560): GC_FOR_ALLOC freed 4K, 3% free 10377K/10631K, paused 93ms
06-04 10:07:43.941: I/dalvikvm-heap(560): Grow heap (frag case) to 11.451MB for 1280016-byte allocation
06-04 10:07:44.183: D/dalvikvm(560): GC_CONCURRENT freed <1K, 3% free 11626K/11911K, paused 8ms+9ms
06-04 10:07:45.182: W/TextLayoutCache(560): computeValuesWithHarfbuzz -- need to force to single run
06-04 10:07:48.961: D/AndroidRuntime(560): Shutting down VM
06-04 10:07:48.961: W/dalvikvm(560): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
06-04 10:07:49.001: E/AndroidRuntime(560): FATAL EXCEPTION: main
06-04 10:07:49.001: E/AndroidRuntime(560): java.lang.NullPointerException
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.app.Dialog.<init>(Dialog.java:149)
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.app.Dialog.<init>(Dialog.java:127)
06-04 10:07:49.001: E/AndroidRuntime(560):  at com.astrixapp.Concejos$SectionFragmentCocina$1.onClick(Concejos.java:123)
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.view.View.performClick(View.java:3480)
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.view.View$PerformClick.run(View.java:13983)
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.os.Handler.handleCallback(Handler.java:605)
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.os.Looper.loop(Looper.java:137)
06-04 10:07:49.001: E/AndroidRuntime(560):  at android.app.ActivityThread.main(ActivityThread.java:4340)
06-04 10:07:49.001: E/AndroidRuntime(560):  at java.lang.reflect.Method.invokeNative(Native Method)
06-04 10:07:49.001: E/AndroidRuntime(560):  at java.lang.reflect.Method.invoke(Method.java:511)
06-04 10:07:49.001: E/AndroidRuntime(560):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-04 10:07:49.001: E/AndroidRuntime(560):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-04 10:07:49.001: E/AndroidRuntime(560):  at dalvik.system.NativeStart.main(Native Method)
06-04 10:07:53.230: I/Process(560): Sending signal. PID: 560 SIG: 9
PD:我试图尽我所能发布,如果有更好的方法,请告诉我,我帮助你,并以我的英语表示抱歉。

1 个答案:

答案 0 :(得分:1)

您似乎将上下文变量设置为null,然后使用该变量创建AlertDialog。所以,它给你一个NullPointerException。而不是做:

Context context = null;

尝试这样做:

Context context = SectionFragmentCocina.this.getActivity();