0

2つの活動があります。次は最初の活動です。

@Override
public void onCreate(Bundle savedInstanceState) {

    try {
        super.onCreate(savedInstanceState);

        final CharSequence[] items = {"Pick from gallery", "Shoot now"};

        //Prepare the list dialog box
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        //Set its title
        builder.setTitle("Choose a video");

        //Set the list items along with checkbox and assign with the click listener
        builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {

            // Click listener
            public void onClick(DialogInterface dialog, int item) {

                if(items[item]=="Pick from gallery"){
                    Toast.makeText(getApplicationContext(), "Choose a video", Toast.LENGTH_SHORT).show();
                    dialog.dismiss();
                    Intent r1= new Intent("com.asin.amit.PIC");
                    r1.putExtra("choice", 1);
                    startActivity(r1);
                }

                if(items[item]=="Shoot now"){
                    Toast.makeText(getApplicationContext(), "Record a video", Toast.LENGTH_SHORT).show();
                    dialog.dismiss();
                    Intent r1= new Intent("com.asin.amit.PIC");
                    r1.putExtra("choice", 2);
                    startActivity(r1);
                }    
            }
        });

        AlertDialog alert = builder.create();

        //display dialog box
        alert.show();
    } 
    catch(Exception e)
    {
        Toast.makeText(getApplicationContext(), "Unknown issue, Kindly restart the application", Toast.LENGTH_LONG).show(); 

        e.printStackTrace();
    }

ユーザーが 2 番目のアクティビティで [戻る] ボタンを押すと、この最初のアクティビティを開始したいのですが、現在は黒い画面しか表示されず、ポップアップ メニューは表示されません。メニューを取得するには、モバイルを回転させる必要があります。デフォルトでそれを作る方法は?また、必須で使用tryしていsuper.onCreateますか?

もう1つ編集 する問題は、2番目のアクティビティで何のタスクも実行していないことです。最初のタスクはギャラリーからビデオを選択することです。このBACK段階で を押すと、空白の画面が表示されるので、BACKもう一度押す必要があります。これを回避するには?

4

3 に答える 3

2

onCreate()ではなく、 onResume()メソッドで記述alert.show();してみてください。

ユーザーが 2 番目のアクティビティから戻るボタンを押すと、最初のアクティビティの onResume() が呼び出されます。

お役に立てれば!!

于 2012-06-20T13:01:25.877 に答える
2

このメソッドを使用して、Activity を呼び出すことができます

これは私のアプリで使用した例です

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            // _progressDialog.dismiss();
            if (getIntent().getExtras().getString("From").equals("Menu")) {
                Intent intent = new Intent(getApplicationContext(),
                        VideoTypes.class);
                intent.putExtra("From",
                        getIntent().getExtras().getString("From"));
                startActivity(intent);
                finish();
            }

        }
        return super.onKeyDown(keyCode, event);
    }

これがあなたを助けることを願っています

于 2012-06-20T13:04:02.210 に答える
0

super.onCreate()必要とされている。電話をかけないと、アプリがクラッシュします。

の代わりにstartActivityForResult()を使用できますstartActivity()。したがって、2番目のアクティビティが終了したときにイベントをキャッチして、メニューを再度表示できます。

于 2012-06-20T13:09:26.063 に答える