0

У меня есть код для вызова намерения отобразить экран работающих сервисов. Но я хотел, чтобы он отображался внутри фрагмента. Но я не в состоянии это сделать. Я называю это намерение из класса java «bottompage.java», который является фрагментом для нижней половины страницы. Но все же, когда нажата кнопка, это намерение занимает весь экран.Отображение внутреннего намерения внутри фрагмента не работает

активность Основной:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.app_display); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.add(R.id.fragmentContainer1, new TopPage()); 
    fragmentTransaction.add(R.id.fragmentContainer2, new BottomPage()); 
    fragmentTransaction.commit(); 

    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 

} 

Bottompage.java

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View secondview = inflater.inflate(R.layout.bottom_fragment,container,false); 
    Button dummy = (Button) secondview.findViewById(R.id.dummy); 

    dummy.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      final String APP_DETAILS_PACKAGE_NAME ="com.android.settings"; 
      // Here you need to define the package name 

      final String SCREEN_CLASS_NAME ="com.android.settings.RunningServices"; 
      Intent servicesintent = new Intent(); 
      servicesintent.setAction(Intent.ACTION_VIEW); 
      //intent.setAction(Intent.ACTION_VIEW); 
      servicesintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      servicesintent.setClassName(APP_DETAILS_PACKAGE_NAME, SCREEN_CLASS_NAME); 

      BottomPage.this.getActivity().startActivity(servicesintent); 
     } 
    }); 
    return secondview; 
} 

main.xml XML-файл для 2-х фрагментов

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:weightSum="1"> 

<TextView 
    android:layout_width="157dp" 
    android:layout_height="wrap_content" 
    android:text="Second page" 
    android:id="@+id/tv2" 
    android:layout_gravity="center_horizontal" 
    android:layout_weight="0.06" /> 

<FrameLayout 
    android:id ="@+id/fragmentContainer1" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:layout_gravity="center_horizontal" 
    android:layout_weight="0.06"></FrameLayout> 

<FrameLayout 
    android:id ="@+id/fragmentContainer2" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/fragmentContainer1"></FrameLayout> 

XML-файл для нижнего фрагмента BottomPage.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/bottom_fragment"> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="call services" 
    android:id="@+id/dummy" 
    android:layout_gravity="center_horizontal" /> 

Как я сделать намерение «servicesintent» в bottompage.java для отображения текущих услуг в пределах фрагмента «fragmentcontainer2». В настоящее время он занимает весь экран.

+1

Цель - новое действие и не может отображаться как часть текущего экрана. – Shubhank

ответ

0

Я не уверен, что вы точно хотите

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

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    ... 
    Activity parent = this.getActivity(); 
    Intent intent = (parent == null) ? null : parent.getIntent(); 

    if (intent != null) { 
     Log.d(Global.LOG_CONTEXT, "onCreateView " + 
      intent.toUri(Intent.URI_INTENT_SCHEME)); 
    } 

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

+0

HI ... Мне нужен экран, который приходит путем вызова функции servicesintent.setClassName (APP_DETAILS_PACKAGE_NAME, SCREEN_CLASS_NAME); BottomPage.this.getActivity(). StartActivity (servicesintent); для отображения в области «фрагмент-контейнер2» основного текста –

+0

Log.d (Global.LOG_CONTEXT, «dummy.OnClickListener» + servicesintent.toUri (Intent.URI_INTENT_SCHEME)); – k3b

0

Как сделать намерение «servicesintent» в bottompage.java отображать запущенные службы внутри фрагмента «fragmentcontainer2».

У вас нет. Вы не можете внедрять сторонние пользовательские интерфейсы в свои собственные, за исключением особых обстоятельств (например, виджеты приложений и домашний экран).

Также обратите внимание, что нет никаких требований о том, чтобы какое-либо устройство имело com.android.settings.RunningServices деятельность в com.android.settings, которая экспортируется.

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