abrir un Activity desde otro Activity

publicado por: Anonymous

Buen día a todos
desarrollo una app en Android studio
pero tengo un problema al abrir un activity y es que cuando toco a un boton, se supone que me mandaría a otra pantalla sin embargo cuando hago eso, la app se cierra, he seguido los pasos que he visto en youtube pero no me funciona…

este es el activity principal que llama a otra que se llama searchtabs

public class MainActivity extends AppCompatActivity implements View.OnClickListener {


Button btnLogin;
EditText txtUser, txtPass;

@Override
public void onClick(View view) {
    Intent intent = new Intent(getApplicationContext(),searchtabs.class);
    startActivity(intent);
}

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

    txtUser = (EditText) findViewById(R.id.txtUser);
    txtPass = (EditText) findViewById(R.id.txtPass);
    btnLogin = (Button) findViewById(R.id.btnInicio);

    btnLogin.setOnClickListener(this);

 }
}

y esta es el activity que debería ejecutarse

public class searchtabs extends AppCompatActivity {

private TabLayout tabLayout;
private AppBarLayout appBarLayout;
private ViewPager viewPager;

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

    tabLayout = (TabLayout) findViewById(R.id.tablayout_id);
    appBarLayout = (AppBarLayout) findViewById(R.id.appbarid);
    viewPager = (ViewPager) findViewById(R.id.viewpager_id);

    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    // Añadiendo fragments
    adapter.AddFragment(new FragmentBuscar(), "Buscar");
    adapter.AddFragment(new FragmentPromo(), "Promociones");
    adapter.AddFragment(new FragmentPerfil(), "Perfil");
    // adaptador
    viewPager.setAdapter(adapter);
    tabLayout.setupWithViewPager(viewPager);
 }
}

si me olvido de algo se los agradezco, gracias.

solución

El mensaje de error dice que no encuentra la Activity, debido probablemente a que no ha sido declarada en el archivo AndroidManifest.xml.

Conviene que abras ese archivo y revises si tienes agregada tu activity searchtabs.

Debe haber algo como esto más o menos, y si no está, debes agregarlo:

    <activity
        android:name=".activities.searchtabs"
        android:label="@string/title_activity_searchtab"
        android:parentActivityName=".activities.MainActivity"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="tu-paquete.activities.MainActivity" />
    </activity>

Debes verificar todos los atributos tales como label, parentActivityName (si lo tiene), theme … y el apartado meta-data si es que es una activity dependiente de otra. En todas esas partes debes poner datos reales de tu contexto.

Si tienes dudas sobre la estructura del Manifest, puedes consultar la documentación de Android al respecto.

NOTA SOBRE LA CONVENCIÓN DE NOMBRES:

Conviene que apliques las normas sobre la convención de nombres
para hacer tu código legible para cualquier programador que lo deba
revisar o si en un futuro hay trabajo en colaboración con otros.

La convención de nombres para activities es la misma que para las
clases: la primera letra de cada palabra en mayúscula, también, por
lo general, cuando es una activity se suele poner la palabra
Activity en el nombre. Respetando esas normas tu clase se debería
llamar: SearchTabsActivity.

Esto no afecta el funcionamiento del código, pero sí a la claridad del
mismo.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *