0

Я хочу открыть другое действие с помощью кнопки Фрагмент, но каждый раз, когда я запускаю приложение, я, к сожалению, остановлюсь.Как начать другое действие с помощью кнопки внутри фрагмента

Я делаю это в течение недели, пока не могу запустить кнопки. Буду признателен, если кто-нибудь даст мне ответ. Я новичок в андроиде.

Мой код о боковом меню, то один из бокового меню содержит кнопки, чтобы открыть новый вид деятельности

package tipqc.softeng.sundroidtracker; 

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

public class FindPeopleFragment extends Fragment{ 


View view; 

//Intent i; 

public FindPeopleFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

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

    Button button = (Button)view.findViewById(R.id.button1); 
    button.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v){ 
      switch(v.getId()){ 

      case R.id.button1: 
      Intent intent1 = new Intent(view.getContext(), ResearchStudy.class); 
       startActivity(intent1); 
       break; 
      } 
      //startActivity(i); 
     } 
    }); 

    return view; 
} 
} 

Ниже LOG

12-31 14:36:33.040: E/AndroidRuntime(2843): FATAL EXCEPTION: main 
12-31 14:36:33.040: E/AndroidRuntime(2843): Process: tipqc.softeng.sundroidtracker, PID: 2843 
12-31 14:36:33.040: E/AndroidRuntime(2843): java.lang.RuntimeException: Unable to start activity ComponentInfo{tipqc.softeng.sundroidtracker/tipqc.softeng.sundroidtracker.ResearchStudy}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.ActivityThread.access$800(ActivityThread.java:144) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.os.Handler.dispatchMessage(Handler.java:102) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.os.Looper.loop(Looper.java:135) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.ActivityThread.main(ActivityThread.java:5221) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at java.lang.reflect.Method.invoke(Native Method) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at java.lang.reflect.Method.invoke(Method.java:372) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
12-31 14:36:33.040: E/AndroidRuntime(2843): Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:110) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:99) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at tipqc.softeng.sundroidtracker.ResearchStudy.onCreate(ResearchStudy.java:12) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.Activity.performCreate(Activity.java:5933) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
12-31 14:36:33.040: E/AndroidRuntime(2843):  ... 10 more 
+0

Заменить 'getActivity startActivity (intent1)();' на 'startActivity (intent1) ; 'и повторите попытку. – Shvet

+3

Добавить журнал здесь ... –

+2

Ваш код выглядит нормально. Покажите свой логарифм. –

ответ

2

Попробуйте заменить getActivity().startActivity() метод, с startActivity() и было бы Работа!.

Ниже приведен полный код:

public FindPeopleFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

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

    Button button = (Button)view.findViewById(R.id.button1); 
    button.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v){ 
      switch(v.getId()){ 

      case R.id.button1: 
       Intent intent1 = new Intent(getActivity(), ResearchStudy.class); 
       startActivity(intent1);//Edited here 
       break; 


      } 
     } 
    }); 

    return view; 
} 

Надеется, что это помогает!

1

Вы должны написать ниже строки кода, чтобы запустить активность из фрагмента:.

Intent intent = new Intent(getActivity(), ActivityB.class); 
startActivity(intent); 
1
public FindPeopleFragment(){} 
View view; 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 

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

Button button = (Button)view.findViewById(R.id.button1); 
button.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v){ 
     switch(v.getId()){ 

     case R.id.button1: 
      Intent intent1 = new Intent(view.getContext(), ResearchStudy.class); 
      view.getContext().startActivity(intent1); 
      break; 


     } 
    } 
}); 

return view; 

}

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