我是否必须在mainActivity.java中定义所有函数

时间:2017-04-19 20:22:29

标签: java android android-layout

当我在android studio中创建一个新活动.xml文件时,它创建了一个相应的.java文件。

我从新活动设置了一个onClick方法调用,但它仍然在mainActivity.java中寻找该方法。

我想在corrosopnding .java文件中定义活动方法,并使用.java链接.xml

2 个答案:

答案 0 :(得分:1)

如果我正确理解你,你正试图为按钮或其他视图设置onClick()动作,但是当你点击它时没有任何反应。是对的吗?在我看来,你的活动与错误的.xml文件有关。仔细检查.java文件中是否具有在setContentView()中定义的正确布局;

例如......

在MainActivity.java中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); // pay attention to this

    Button button = (Button) findViewById(R.id.button); // or else it won't know where to find the button in the layout
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MainActivity.this, Main2Activity.class);
            tartActivity(intent);
        }
    });

}

在Main2Activity.java中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2); // pay attention to this too


}

答案 1 :(得分:1)

每当您在Android上创建新活动时,除非您通过代码告诉它,否则它不会生效。现在,如果查看清单文件,您将能够看到哪个是从程序启动的活动,初始是MainActivity.java文件(它不必命名为MainActivity,但它是默认的机器人)

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

如果在添加第二个活动后查看清单文件,您将看到一个新的<activity>标记,其中包含您在应用程序标记结束之前添加的第二个活动的名称:

<activity
  android:name=".Main2Activity"
  android:label="@string/title_activity_main2"
  android:theme="@style/AppTheme">
</activity>

这意味着您的活动已在您的清单文件中正确注册(应该如此)

为了让你使用它,你需要一些东西来调用它,就像一个按钮点击激活一个Intent就像迈克尔在我上面所说的那样。尝试通过基本的Android教程来了解这种情况并尝试自己实现。你在android中拥有的每个视图都对应一个活动文件(大多数情况下,它们也可以是片段,但这是另一天的主题),大多数与活动事件相对应的代码肯定会要求你编写逻辑代码在活动文件中。将java文件视为控制器,将xml布局视为视图,控制器文件操作视图。