如何在android studio中打开一个新活动的按钮?

时间:2016-05-14 03:50:47

标签: java android android-studio

我在很多很多地方看到这个问题并试图按照指示无效。我不知道问题是否陈旧,我做错了,或者我的android工作室程序是不工作的。我想要做的是在单击按钮时打开新活动。我是开发Android应用程序的新手。

我最近试图按照此处提供的答案:How do I get a button to open another activity in Android Studio?

点击按钮被称为" goTutorials" 我的原始活动称为home(非mainActivity) 新的名为教程。

这是我尝试按照上面的链接添加的内容: 在home的java文件中:

collection2

在清单文件中:

btn = (Button)findViewById(R.id.open_activity_button);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(home.this, tutorials.class));
    }
});

5 个答案:

答案 0 :(得分:2)

我创建了一个示例应用程序,请参阅下面的代码。 您需要在清单文件中指定所有活动的信息。

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nextech.startnewactivity">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".TutorialsActivity"
        android:label="@string/title_activity_tutorials"
        android:theme="@style/AppTheme.NoActionBar"></activity>
</application>

</manifest>

我的Launcher活动是MainActivity.java

package com.nextech.startnewactivity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button startTutorials = (Button)findViewById(R.id.startTutorials);
    startTutorials.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent tutorialsActivityIntent = new Intent(MainActivity.this,TutorialsActivity.class);
            MainActivity.this.startActivity(tutorialsActivityIntent);

        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.nextech.startnewactivity.MainActivity"
tools:showIn="@layout/activity_main">

<TextView android:id="@+id/welcomeText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:layout_centerHorizontal="true"
    android:text="Hello World! This is main activity!" />

<Button android:id="@+id/startTutorials"
    android:layout_below="@+id/welcomeText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Start Tutorials"/>
</RelativeLayout>

TutorialsActivity.java

package com.nextech.startnewactivity;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class TutorialsActivity extends AppCompatActivity {

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

}

activity_tutorials.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.nextech.startnewactivity.TutorialsActivity"
tools:showIn="@layout/activity_tutorials">

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="This is tutorial activity"
    android:layout_centerInParent="true"/>
</RelativeLayout>

我希望它有所帮助。

答案 1 :(得分:1)

方法1


使用XML中的onclick属性(这样,无论何时单击按钮,都会触发定义的方法)

步骤1. - 转到您按下的XML(activity_home)&amp;添加

<Button
............
android:onClick="gotoTutorial"/>

第2步 - 然后转到home.Java&amp;添加以下

public void gotoTutorial(View v){
    Intent tutorialPage = new Intent (this, tutorials.class);
    startActivity(tutorialPage);
}

方法2

使用setOnClickListener

步骤1. -

 //create the link to the button in the interface
 btn_tutorial = (Button)findViewById(R.id.tutorial_button); 

 btn_tutorial.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View v) {
            Intent tutorialPage = new Intent (this, tutorials.class);
            startActivity(tutorialPage);
        }
}

答案 2 :(得分:1)

您的清单文件未显示,但请务必在AndroidManifest.xml字段中的清单application中添加活动。以下是Google的一个示例:Link

<application ... >
...
<activity
    android:name="com.mycompany.myfirstapp.DisplayMessageActivity"
    android:label="@string/title_activity_display_message"
    android:parentActivityName="com.mycompany.myfirstapp.MyActivity" >
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.mycompany.myfirstapp.MyActivity" />
</activity>

否则,您使用的方法应该是正确的。您为要启动的活动的类创建意图。

Intent intent = new Intent(this, tutorials.class);
startActivity(intent);

确保您拥有必要的方法,例如onCreate(Bundle savedInstance)覆盖。

请注意,在上面的示例中,android:name=""是您的活动的类的完整路径名(没有.class / .java),label将是您将看到的操作工具栏字符串。在<meta-data/>部分,您可以将android:value=""更改为起始活动的名称,以便根据您所称的内容进行更改。

最后,确保它有一个XML视图,因为它在onCreate(Bundle savedInstance)调用中被夸大了。

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

}

答案 3 :(得分:0)

活动文件中的

写下这个

    $(document).ready(function () {
       $('.newevent').each(function() {
           var parentHeight = parseInt($(this).parent().css('height'));
           $(this).css('height', 3 * parentHeight  + 'px');
      });
   })

答案 4 :(得分:0)

XML

   <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/button_send"
          android:onClick="sendMessage" />

.Java类

  /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, YourActivityYouWantToOpen.class);
        startActivity(intent);
    }