2013-12-03 3 views
1

Я новичок в создании приложений для Android, я делаю это как требование для моего проекта в колледже. Пожалуйста, помогите мне.Android, перемещающийся между несколькими фрагментами

У моего приложения есть щелкающие вкладки, используя фрагмент. У меня есть 5 вкладок и 5 фрагментов. На некоторых вкладках (фрагментах) мне нужно перейти к новым фрагментам внутри фрагментов; например когда в Tab1 у меня есть кнопки при нажатии, приведет пользователя к новому фрагменту, я обыскал интернет и смог написать код. Мой вопрос, когда в Tab1 и нажмите кнопку для перехода на новый фрагмент я получаю «приложение перестало работать», пожалуйста, помочь мне

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.view.View.OnClickListener; 

public class Unsafe extends Fragment implements OnClickListener { 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.unsafe, container, false); 
    Button button1 = (Button) v.findViewById(R.id.u1); 
    button1.setOnClickListener(this); 
    return v; 
} 

public void onClick(View v) { 
    startActivity(new Intent(getActivity(),unsafe1.class)); 
} 
} 

UPDATE - Проводка LogCat

12-03 08:59:39.538 1460-1460/com.example.hfacs D/AndroidRuntime﹕ Shutting down VM 
12-03 08:59:39.538 1460-1460/com.example.hfacs W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb1a77b90) 
12-03 08:59:39.538  379-645/system_process I/ActivityManager﹕ START u0 {cmp=com.example.hfacs/.Unsafe1} from pid 1460 
12-03 08:59:39.588 1460-1460/com.example.hfacs E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.hfacs, PID: 1460 
    android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.hfacs/com.example.hfacs.Unsafe1}; have you declared this activity in your AndroidManifest.xml? 
      at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628) 
      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424) 
      at android.app.Activity.startActivityForResult(Activity.java:3423) 
      at android.app.Activity.startActivityForResult(Activity.java:3384) 
      at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:848) 
      at android.support.v4.app.Fragment.startActivity(Fragment.java:878) 
      at com.example.hfacs.Unsafe$1.onClick(Unsafe.java:28) 
      at android.view.View.performClick(View.java:4424) 
      at android.view.View$PerformClick.run(View.java:18383) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4998) 
      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:777) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

использование фрагментарная статья. – Giridharan

+0

Было бы очень полезно всегда публиковать логарифм вместе с вашим вопросом. особенно когда речь идет об ошибке. – kdehairy

+0

@kdehairy жаль, что я отправил logcat. Пожалуйста помогите. – Alexis

ответ

0

Я считаю, что вы не должны вызывать startActivity() в onClick. Вместо этого, когда пользователь нажимает кнопку, уведомляйте FragmentActivity, содержащий этот фрагмент. Внутри FragmentActivity вызовите ViewPager.setCurrentItem (position), где position - int. Затем плейер просмотра переместится на нужную вкладку.

Я не уверен, что это лучший способ сделать это. Но я пробовал это раньше, и он работает. Добавьте функцию в свой FragmentActivity, которая используется для перехода на нужную вкладку.

public static void scroll(int pos){ 
    mViewPager.setCurrentItem(pos); //mViewPager is the ViewPager you have in FragmentActivity 
} 

И это onClickListener

Button btn = (Button) v.findViewById(R.id.u1); 
    btn.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      //when button clicked, call the scroll function 
      MainActivity.scroll(position_of_unsafe1); //MainActivity is the FragmentActivity name   
     }   
    }); 
+0

Привет, спасибо за информацию. Не могли бы вы рассказать о том, как этого добиться. – Alexis

+0

@ user3061569 Я добавил код. Надеюсь, это то, чего вы хотите достичь. Здесь я предполагаю, что unsafe1 является одним из фрагментов на одной из вкладок. – Siu

+0

Привет, Спасибо за помощь, Unsafe1 не является одним из фрагментов в одной из вкладок. Unsafe1 - это содержимое на определенной вкладке. Если я могу сказать, что это «вкладка на вкладке». любезно помогите мне. – Alexis

0

Я увидел эту линию в LogCat:

ndroid.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.hfacs/com.example.hfacs.Unsafe1}; have you declared this activity in your AndroidManifest.xml? 

Это означает, что вы не объявлял деятельность Unsafe1 в файле AndroidManifest.xml.

+0

Привет, спасибо. Я тоже это замечаю. Но когда я добавляю «Unsafe1» в manifest.xml и запускаю приложение, он запускает Unsafe1.Ява . ниже мой AndroidManifest.xml Alexis

+0

Что вы подразумеваете под "работает только Unsafe1.java"? это не то, что вы хотите запустить, судя по строке 'startActivity (...)' в вашем коде? – kdehairy

+0

Привет, я бегу Mainactivity и unsafe1 - это класс. см. здесь [link] (https://drive.google.com/file/d/0B1ckYP7ht1p9a0lOaUZBbkRxYjg/edit?usp=sharing) – Alexis

Смежные вопросы