从活动调用片段后获取错误

时间:2015-12-31 06:09:45

标签: android android-layout android-fragments android-intent android-activity

从活动中调用片段时出错,我想使用活动扫描条形码&扫描内容需要上传片段。 我的'PublicBarcodeScannerActivity.java'是=>

    import android.app.Activity;
    import android.app.Fragment;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.support.v4.app.FragmentActivity;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;
    import com.google.zxing.integration.android.IntentIntegrator;
    import com.google.zxing.integration.android.IntentResult;
    import com.example.delivery.R;
    import com.example.delivery.adapter.OrderedItemListAdapter;
    import static android.R.id.content;
    public class PublicBarcodeScannerActivity extends FragmentActivity {
        String actvity;
        String ordid;
        SharedPreferences pref;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_public_barcode_scanner);
            Bundle b = getIntent().getExtras();
            actvity = b.getString("act");
            ordid = b.getString("orderid");
            Log.e("activty:", actvity);
            IntentIntegrator scanIntegrator = new IntentIntegrator(
                    PublicBarcodeScannerActivity.this);
            // start scanning
            scanIntegrator.initiateScan();
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_public_barcode_scanner, menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();

            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
            // retrieve result of scanning - instantiate ZXing object
            IntentResult scanningResult = IntentIntegrator.parseActivityResult(
                    requestCode, resultCode, intent);
            if (scanningResult != null) {
                // get content from Intent Result
                String scanContent = scanningResult.getContents();
                if (scanContent != null) {
                    // get format name of data scanned
                    String scanFormat = scanningResult.getFormatName();

                    Log.d("scanFormat", scanFormat);
                    Log.d("scanContent", scanContent);


                    if (actvity.equals("FragOrdrdItemList")) {
                        Bundle bundle = new Bundle();
                        Log.e("orderIDB:", ordid);
                        bundle.putString("scancode", scanContent);
                        bundle.putString("ACTIVITY", "publicbarcode");
                        bundle.putString("orderid", ordid);
                        OrderedItemListFragment orderedItemListFragment = new OrderedItemListFragment();
                        //OrderedItemListFragment odl=OrderedItemListFragment.newInstance();
                        orderedItemListFragment.setArguments(bundle);

                        FragmentTransaction ft = getFragmentManager().beginTransaction();
    //                    FragmentManager mgr = getFragmentManager();
    //                    mgr.popBackStack();
                        // ft.addToBackStack(null);

                        ft.replace(R.id.container_body, orderedItemListFragment); 
                       ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                        ft.commit();
      }

                } else {
                    if (actvity.equals("FragOrdrdItemList")) {

                        OrderedItemListFragment orderedItemListFragment = new OrderedItemListFragment();
                        Bundle bundle = new Bundle();
                        Log.e("scancode4", scanContent);
                        bundle.putString("scancode", "null");
                        bundle.putString("ACTIVITY", "publicbarcode");
                        bundle.putString("orderid", ordid);
                        Log.e("scancode5", scanContent);
                        orderedItemListFragment.setArguments(bundle);
                        FragmentTransaction ft = getFragmentManager().beginTransaction();
                        ft.addToBackStack(null);
                        ft.replace(R.layout.activity_main, orderedItemListFragment); // f2_container is your FrameLayout container
                        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                        ft.commit();
                        Log.e("scancode6", scanContent);
                    }
                }

            } else {
                // invalid scan data or scan canceled
                Toast toast = Toast.makeText(getApplicationContext(),
                        "No scan data received!", Toast.LENGTH_SHORT);
                toast.show();
            }
        }
    }

我的Logcat显示以下错误=>

        12-31 11:15:26.928  17452-17452/com.example.delivery E/activty:﹕ FragOrdrdItemList
        12-31 11:15:48.218  17452-17452/com.example.delivery E/orderIDB:﹕ 10776
        12-31 11:15:48.218  17452-17452/com.example.delivery E/FragmentManager﹕ No view found for id 0x7f0e0079 (com.example.delivery:id/container_body) for fragment OrderedItemListFragment{42b552d0 #0 id=0x7f0e0079}
        12-31 11:15:48.218  17452-17452/com.example.delivery E/FragmentManager﹕ Activity state:
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ Local FragmentActivity 42b2f318 State:
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ mCreated=truemResumed=false mStopped=true mReallyStopped=true
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ mLoadersStarted=true
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ FragmentManager misc state:
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ mHost=android.support.v4.app.FragmentActivity$HostCallbacks@42b2f580
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ mContainer=android.support.v4.app.FragmentActivity$HostCallbacks@42b2f580
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ mCurState=2 mStateSaved=true mDestroyed=false
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ View Hierarchy:
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ com.android.internal.policy.impl.PhoneWindow$DecorView{42b30338 V.E..... ... 0,0-0,0}
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ android.widget.LinearLayout{42b30980 V.E..... ... 0,0-0,0}
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ android.view.ViewStub{42b31478 G.E..... ... 0,0-0,0 #102031c}
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ android.widget.FrameLayout{42b316d8 V.ED.... ... 0,0-0,0 #1020002 android:id/content}
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ android.widget.RelativeLayout{42b31e78 V.E..... ... 0,0-0,0 #7f0e0080 app:id/activity_public_barcode_scanner}
        12-31 11:15:48.228  17452-17452/com.example.delivery E/FragmentManager﹕ android.widget.TextView{42b32448 V.ED.... ... 0,0-0,0}
        12-31 11:15:48.248  17452-17452/com.example.delivery E/AndroidRuntime﹕ FATAL EXCEPTION: main
            Process: com.example.delivery, PID: 17452
            java.lang.RuntimeException: Unable to resume activity {com.example.delivery/com.example.delivery.activity.PublicBarcodeScannerActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f0e0079 (com.example.delivery:id/container_body) for fragment OrderedItemListFragment{42b552d0 #0 id=0x7f0e0079}
                    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2790)
                    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2819)
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1254)
                    at android.os.Handler.dispatchMessage(Handler.java:102)
                    at android.os.Looper.loop(Looper.java:136)
                    at android.app.ActivityThread.main(ActivityThread.java:5052)
                    at java.lang.reflect.Method.invokeNative(Native Method)
                    at java.lang.reflect.Method.invoke(Method.java:515)
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
                    at dalvik.system.NativeStart.main(Native Method)
             Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0e0079 (com.example.delivery:id/container_body) for fragment OrderedItemListFragment{42b552d0 #0 id=0x7f0e0079}
                    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:882)
                    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
                    at android.app.BackStackRecord.run(BackStackRecord.java:690)
                    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1449)
                    at android.app.Activity.performStart(Activity.java:5257)
                    at android.app.Activity.performRestart(Activity.java:5314)
                    at android.app.Activity.performResume(Activity.java:5319)
                    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2780)
                    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2819)
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1254)
                    at android.os.Handler.dispatchMessage(Handler.java:102)
                    at android.os.Looper.loop(Looper.java:136)
                    at android.app.ActivityThread.main(ActivityThread.java:5052)
                    at java.lang.reflect.Method.invokeNative(Native Method)
                    at java.lang.reflect.Method.invoke(Method.java:515)
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
                    at dalvik.system.NativeStart.main(Native Method)

请帮我解决这个问题

3 个答案:

答案 0 :(得分:0)

下面:

ft.replace(R.layout.activity_main, orderedItemListFragment);

目前将布局文件ID作为第一个参数传递,但替换方法所需的布局容器id R.id.container_body

传递布局ID,其中想要用作片段容器,如:

ft.replace(R.id.container_body, orderedItemListFragment);

答案 1 :(得分:0)

问题是android无法在其活动container_body的布局中找到布局容器activity_public_barcode_scanner。因此它显示了类似的错误No view found for id 0x7f0e0079

 ft.replace(R.id.container_body, orderedItemListFragment); 

确保container_body中有activity_public_barcode_scanner

答案 2 :(得分:0)

缺少替换片段的ID。 activity_public_barcode_scanner是打开PublicBarcodeScannerActivity类的主要布局。您可以通过替换布局ID而不是新布局来打开新的片段

 ft.replace(R.layout.activity_main, orderedItemListFragment);

错了。