Android-приложение завершает тест - PullRequest
0 голосов
/ 23 февраля 2011

Я использую пользовательский диалог оповещения. Если пользователь нажимает отрицательную кнопку кода, мне нужно полностью закрыть приложение. Я использую следующий код.

public class TestApp extends TabActivity {

    private int tabid = 0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final TabHost tabHost = getTabHost();  // The activity TabHost
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab

        Intent intent;  // Reusable Intent for each tab
        Intent myint = this.getIntent();
        tabid = myint.getIntExtra("tab_id", 0);

        .......................
        .........................
        .......................


        tabHost.setCurrentTab(tabid);

        showReward(this);
    }

    private void showReward(Context c) {
        // TODO Auto-generated method stub
        final AlertDialog.Builder builder;
        AlertDialog alertDialog;
        Context mContext = c;
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.layout_root));
        TextView text = (TextView) layout.findViewById(R.id.title);
        text.setText("Sample text");
        text.setGravity(Gravity.CENTER);
        TextView msg = (TextView) layout.findViewById(R.id.msg);
        msg.setText("Sample text.");
        builder = new AlertDialog.Builder(mContext);
        builder.setView(layout);        
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Log.d(null,"step1");
                dialog.cancel();
                Log.d(null,"step2");
                closeApp();
            }
        });
        alertDialog = builder.create();
        alertDialog.show();
    }

    private void closeApp(){
        Log.d(null,"step3");
        this.finish();
    }


} 

Но прежде чем добавить функцию showReward (), она работает отлично. Когда вы добавляете функцию, диалоговое окно выглядит идеально. Если мы нажимаем на отрицательную кнопку, это дает NullpointerException из-за «Невозможно уничтожить активность». В чем проблема с моим кодом?

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

это проблема, связанная с cursor.close () на момент окончания.Нет такого закрытия во время финиша ()

0 голосов
/ 23 февраля 2011

Пожалуйста, покажите трассировку стека вашей ошибки.

Делая дикие предположения, не видя трассировки стека, я бы сказал, что вызов this.finish() (вместо finish()) - это ваша проблема, поскольку "this", вероятно, не относится к деятельности, которую вы пытаетесь завершить.

Также смотрите эту ссылку:
http://www.connorgarvey.com/blog/?p=93
где происходит нечто подобное.

...