1

Я работаю с навигационным ящиком, и я хочу вызвать класс testActivity.java, когда кто-то нажимает на элемент, находящийся в скользящем меню. В настоящее время мои кавычки MainActivity.java обращаются к FragmentOne, FragmentTwo, FragmentThree при скольжении пункт меню selected..I хотите заменить это testActivity.javaкак вызвать класс активности из фрагмента

вот мой MainActivity.java

public class MainActivity extends FragmentActivity { 
final String[] data ={"one","two","three"}; 
final String[] fragments ={ 
     "core.layout.FragmentOne", 
     "core.layout.FragmentTwo", 
     "core.layout.FragmentThree"}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String> (getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, data); 

    final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout); 
    final ListView navList = (ListView) findViewById(R.id.drawer); 
    navList.setAdapter(adapter); 
    navList.setOnItemClickListener(new OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, final int pos,long id){ 
        drawer.setDrawerListener(new DrawerLayout.SimpleDrawerListener(){ 
          @Override 
          public void onDrawerClosed(View drawerView){ 
            super.onDrawerClosed(drawerView); 
            FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); 
            tx.replace(R.id.main, Fragment.instantiate(MainActivity.this, fragments[pos])); 
            tx.commit(); 
          } 
        }); 
        drawer.closeDrawer(navList); 
      } 
    }); 
    FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); 
    tx.replace(R.id.main,Fragment.instantiate(MainActivity.this, fragments[0])); 
    tx.commit(); 
} 

}

вот мой FragmentOne.java Calss .. Все остальные FragmentTwo и FragmentThr классы ee.java, имеющие такой же код.

 public class FragmentOne extends Fragment { 


public static Fragment newInstance(Context context) { 
    FragmentOne f = new FragmentOne(); 

    return f; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_one, null); 

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

    return root; 


} 

}

Это мой testActivity.java класс

public class testActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.test); 


} 

}

ответ

3

В фрагмента вы можете получить доступ к его экземпляр родительского FragmentActivity с помощью getActivity(). И так как этот экземпляр является активным, так что вы можете просто вызвать другое действие.

Intent myIntent = new Intent((ParentActivity)getActivity(), YourOtherActivity.class); 
(ParentActivity)getActivity().startActivity(myIntent); 
+0

Вы имеете в виду это в классе FragmentOne? .. но его не работает? Intent intent = new Intent (getActivity(), testActivity.class); getActivity(). StartActivity (намерение); – san88

+0

Я надел их так. Нет ошибок или ошибок во время выполнения. Но просто не отображается файл макета ... public View onCreateView (LayoutInflater inflater, контейнер ViewGroup, Bundle savedInstanceState) { ViewGroup root = (ViewGroup) inflater.inflate (R.layout.fragment_one, null); View view = inflater.inflate (R.layout.fragment_one, контейнер, false); Целевое намерение = новое намерение (getActivity(), testActivity.class); getActivity(). StartActivity (намерение); вернуть корень; } – san88

+0

Попробуйте использовать функцию getActivity для ParentActivity. Я добавил свой ответ, чтобы добавить образец кода. – Sushil

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