1

ボタンを押して新しいアクティビティを開始すると、アプリケーションは代わりにメイン アクティビティに移動します。
エラーがないので、本当に混乱しています。また、目的のアクティビティの作成時にログメッセージが表示されます-ポップアップしません。このような奇妙な動作を引き起こす原因を教えてください。

    public void btnAtcEdit(View v) {
        Log.d("ATS", "i tried to go to ATS believe me");
        try {
            Log.d("ATS", " i tried to go to ATS 2 believe me");
            // convert bitmap to bytearray to pass them in intent
            final BitmapDrawable bitmapDrawable1 = (BitmapDrawable) photo1
                    .getDrawable();
            final Bitmap yourBitmap1 = bitmapDrawable1.getBitmap();
            ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
            yourBitmap1.compress(Bitmap.CompressFormat.PNG, 90, stream1);
            byte[] imm1 = stream1.toByteArray();

            final BitmapDrawable bitmapDrawable2 = (BitmapDrawable) photo2
                    .getDrawable();
            final Bitmap yourBitmap2 = bitmapDrawable2.getBitmap();
            ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
            yourBitmap2.compress(Bitmap.CompressFormat.PNG, 90, stream2);
            byte[] imm2 = stream2.toByteArray();

            final BitmapDrawable bitmapDrawable3 = (BitmapDrawable) photo3
                    .getDrawable();
            final Bitmap yourBitmap3 = bitmapDrawable3.getBitmap();
            ByteArrayOutputStream stream3 = new ByteArrayOutputStream();
            yourBitmap3.compress(Bitmap.CompressFormat.PNG, 90, stream3);

            byte[] imm3 = stream3.toByteArray();
            Intent i = new Intent(AddToCheckActivity.this,
            AddSaveActivity.class);

            i.putExtra("photo1", imm1);
            /*
                        putting more parameters
                        */
            i.putExtra("not_priceFor", not_priceFor);

            startActivity(i);
            stream1.flush();
            stream1.close();
            stream2.flush();
            stream2.close();
            stream3.flush();
            stream3.close();
//          finish();
        } catch (Exception e) {
            Log.d("ATS error", "before entered ATS");
            e.printStackTrace();
        }

    }

AddSaveActivity

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aadd_add_edit);
        Log.d("ATS", "was started");
                /*
                some job
                */
                }

丸太の猫は空です ただ、そのボタンが押されました。

08-07 11:32:28.250: D/ATS(19968): i tried to go to ATS believe me
08-07 11:32:28.250: D/ATS(19968):  i tried to go to ATS 2 believe me
08-07 11:32:28.992: I/dalvikvm-heap(19968): Grow heap (frag case) to 22.075MB for 414640-byte allocation
08-07 11:32:29.054: D/dalvikvm(19968): GC_CONCURRENT freed 940K, 28% free 17454K/24111K, paused 15ms+3ms, total 59ms
08-07 11:32:29.187: E/Trace(20764): error opening trace file: No such file or directory (2)
08-07 11:32:29.203: V/ActivityThread(20764): Class path: /system/framework/com.google.android.maps.jar:/data/app/ua.mirkvartir.android.frontend-2.apk, JNI path: /data/data/ua.mirkvartir.android.frontend/lib
08-07 11:32:29.398: D/dalvikvm(20764): GC_CONCURRENT freed 89K, 22% free 9913K/12651K, paused 14ms+2ms, total 38ms
08-07 11:32:29.398: D/dalvikvm(20764): WAIT_FOR_CONCURRENT_GC blocked 10ms
08-07 11:32:29.414: D/login(20764): -- 0
08-07 11:32:29.468: D/libEGL(20764): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
08-07 11:32:29.492: D/libEGL(20764): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
08-07 11:32:29.492: D/libEGL(20764): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
08-07 11:32:29.656: D/OpenGLRenderer(20764): Enabling debug mode 0

ボタンの onClickListener は xml で定義されています

 <Button
                android:id="@+id/btnAtcEdic"
                android:layout_width="0px"
                android:layout_height="match_parent"
                android:layout_margin="0dp"
                android:layout_marginBottom="10sp"
                android:layout_marginLeft="40sp"
                android:layout_marginRight="40sp"
                android:layout_marginTop="10sp"
                android:layout_weight="1"
                android:background="@drawable/button_primary"
                android:drawablePadding="0sp"
                android:onClick="btnAtcEdit"
                android:padding="0dp"
                android:text="Редактировать"
                android:textColor="#FFFFFF" />

興味深いことに、HTC フォンでは常にエラーの兆候がなく動作します。

編集: imm フォーム インテントをシングルトンに移動した後、アプリは正しく動作しているようです

4

3 に答える 3

1

アプリケーション コンテキストを使用してアクティビティを開始することはできません。それらは、別のアクティビティ コンテキストでのみ開始できます。

次の変更により、これが修正されます。<YourCallingActivity> をアクティビティ名に置き換えます

Intent i = new Intent(<YourCallingActivity>.this, AddSaveActivity.class);

参考までに、どの場所でどのようなコンテキストが必要かについてのガイドを次に示します。

http://www.doubleencore.com/2013/06/context/?utm_source=Android+Weekly&utm_campaign=78ad4cb95e-Android_Weekly_64&utm_medium=email&utm_term=0_4eb677ad19-78ad4cb95e-335181433

于 2013-08-07T08:50:24.957 に答える
0

この問題はバイト配列によって引き起こされました。大量のデータを送信する目的で使用することは想定されていません。bytearrays をインテントからシングルトン クラスに移動した後、その問題はなくなりました。

于 2013-08-19T11:01:32.863 に答える
0

あなたは試すことができます:

            stream1.flush();
            stream1.close();
            stream2.flush();
            stream2.close();
            stream3.flush();
            stream3.close();

 Intent i = new Intent(SecondActivity.this,
                    AddSaveActivity.class);

            i.putExtra("photo1", imm1);
            /*
                        putting more parameters
                        */
            i.putExtra("not_priceFor", not_priceFor);

            startActivity(i);
于 2013-08-07T08:43:14.707 に答える