2017-10-11 2 views
0

탭 활동을 사용하고 있습니다. 첫 번째 탭에서 단추를 클릭 한 다음 두 번째 탭에 사용해야하는 단추를 사용했습니다.Intent를 구현하여 다른 단편에서 단편을 호출하는 방법

인 텐트를 사용하여 첫 번째 조각에서 두 번째 조각을 호출하려면 어떻게해야합니까?

다음 두 코드는 모두 코드입니다.

첫 번째 조각 :

package com.touchsmart.spectacular.ui.Fragments; 

import.... 

public class ShippingFragment extends Fragment { 

    private LinearLayout addnew; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    //returning our layout file 

    View view = inflater.inflate(R.layout.fragment_shipping, container, false); 

    addnew = (LinearLayout) view.findViewById(R.id.addnew); 

    addnew.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(getActivity(),PaymentFragment.class); 
      startActivity(i); 
     } 
    }); 


    return view; 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    //you can set the title for your toolbar here for different fragments different titles 
    getActivity().setTitle("Check Out"); 
} 
} 

두 번째 조각 :

package com.touchsmart.spectacular.ui.Fragments; 

import... 

public class PaymentFragment extends Fragment{ 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     //returning our layout file 
    View view = inflater.inflate(R.layout.fragment_payment, container, false); 

    return view; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    //you can set the title for your toolbar here for different fragments different titles 
    getActivity().setTitle("Check Out"); 
    } 
    } 

내가 지금 사용하고 코드는 첫 번째 버튼을 클릭에 다음과 같은 오류를 보여줍니다

FATAL EXCEPTION: main Process: com.touchsmart.spectacular, PID: 18942 
    android.content.ActivityNotFoundException: Unable to find explicit activity class {com.touchsmart.spectacular/com.touchsmart.spectacular.ui.Fragments.PaymentFragment}; have you declared this activity in your AndroidManifest.xml? 
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805) 
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523) 
    at android.app.Activity.startActivityForResult(Activity.java:4225) 
    at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) 
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) 
    at android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:30) 
    at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:146) 
    at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:932) 
    at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1047) 
    at android.support.v4.app.Fragment.startActivity(Fragment.java:944) 
    at android.support.v4.app.Fragment.startActivity(Fragment.java:933) 
    at com.touchsmart.spectacular.ui.Fragments.ShippingFragment$1.onClick(ShippingFragment.java:36) 
    at android.view.View.performClick(View.java:5637) 
    at android.view.View$PerformClick.run(View.java:22429) 
    at android.os.Handler.handleCallback(Handler.java:751) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6119) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

사람이 제공 나에게 이것을 통해 얻을 수있는 해결책. 감사합니다 ...

+0

'PaymentFragment'는'FragmentManager'를 사용하여'ShippingFragment'로 대체해야하는'Fragment'입니다 –

+0

이 링크로 이동 [https://stackoverflow.com/a/25945639/7226732] – Mohammad

답변

0

Intent를 호출하는 조각으로 호출 할 수 없습니다. 조각을 추가하려면이 코드를 사용해야합니다.

getSupportFragmentManager().beginTransaction().add(R.id.frameLayout, fragment).commit(); 

아니면 조각을

getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, fragment).commit(); 
0
Intent i = new Intent(getActivity(), PaymentFragment.class); 
startActivity(i); 

를 교체 할 경우 작동 및 startActivity()를 사용하여 Fragment를 시작할 수 없습니다. Activity 만 변경하려는 경우 사용해야합니다.


당신은, Fragment을 대체 FragmentManagerFragmentTransaction을 사용하고자합니다.

// Create fragment and give it an argument specifying the article it should show 
ArticleFragment newFragment = new ArticleFragment(); 
Bundle args = new Bundle(); 
args.putInt(ArticleFragment.ARG_POSITION, position); 
newFragment.setArguments(args); 

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack so the user can navigate back 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit(); 

그것은 당신을 위해 도움이 될 것입니다,이 Replace One Fragment with Another 읽어 보시기 바랍니다.

0

UI를 더 대화식으로 멋지게 만들기 위해 내가 구현 한 것을 공유 할 것입니다.

조각의 Java 파일에서 viewPager에 액세스하기 만하면 탭 활동에 viewPager을 아래와 같이 선언하십시오.

public static ViewPager viewPager; 

다음 버튼을 onClick 방법 또는 onClickListener에, 당신은이를 사용할 수 있습니다. 당신이 바로 당신이 viewPager의 스크롤을 해제 할 수 있습니다 스크롤에서 사용자를 제한하려면

TabbedActivity.viewPager.arrowScroll(View.FOCUS_RIGHT); 

이, 그래 당신 viewpager 지불 활동으로 스크롤 부드럽게, 그리고 것, here를 참조하십시오.

그러나 탭으로 표시된 활동의 FragmentAdapter에 아래와 같은 조각을 구현 한 경우에만 작동합니다.

@Override 
     public android.support.v4.app.Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        return new ShippingFragment(); 
       case 1: 
        return new PaymentFragment(); 

      } 
      return null; 
     } 

사용자가 단지

TabbedActivity.viewPager.arrowScroll(View.FOCUS_LEFT); 

에 의해 ShippingFragment 다시 가고 싶은 경우도 왼쪽으로 초점을 전환 할 수 있습니다 그리고 네, 그것은 나를 바보, 게시 대답하기 전에 첫 번째 테스트로 일하고있다.

관련 문제