只有“数字”有效,其余没有任何动作,但没有错误。当我单击Numbers Textview时,它可以工作并转到其他意图,但是当我单击任何其他TextView时,它根本不起作用。
所有活动都在清单中声明。
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.miwok;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the content of the activity to use the activity_main.xml layout file
setContentView(R.layout.activity_main);
// Find the View that shows the phrases category
TextView colors = (TextView) findViewById(R.id.colors);
// Set a click listener on that View
colors.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the phrases View is clicked on.
@Override
public void onClick(View view) {
Intent colorsIntent = new Intent(MainActivity.this, ColorsActivity.class);
startActivity(colorsIntent);
}
});
// Set the content of the activity to use the activity_main.xml layout file
setContentView(R.layout.activity_main);
// Find the View that shows the phrases category
TextView family = (TextView) findViewById(R.id.family);
// Set a click listener on that View
family.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the phrases View is clicked on.
@Override
public void onClick(View view) {
Intent familyIntent = new Intent(MainActivity.this, FamilyActivity.class);
startActivity(familyIntent);
}
});
// Set the content of the activity to use the activity_main.xml layout file
setContentView(R.layout.activity_main);
// Find the View that shows the phrases category
TextView phrases = (TextView) findViewById(R.id.phrases);
// Set a click listener on that View
phrases.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the phrases View is clicked on.
@Override
public void onClick(View view) {
Intent phrasesIntent = new Intent(MainActivity.this, PhrasesActivity.class);
startActivity(phrasesIntent);
}
});
// Set the content of the activity to use the activity_main.xml layout file
setContentView(R.layout.activity_main);
// Find the View that shows the phrases category
TextView numbers = (TextView) findViewById(R.id.numbers);
// Set a click listener on that View
numbers.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the phrases View is clicked on.
@Override
public void onClick(View view) {
Intent numbersIntent = new Intent(MainActivity.this, NumbersActivity.class);
startActivity(numbersIntent);
}
});
}
}
您打了setContentView()
两次电话。第二次创建一组新View
对象,这些对象与您已OnClickListener
为其设置的对象不同。View
实际显示的是新的,没有任何侦听器。删除第二个电话,您将很方便。
ps如果有重复的代码,则应创建一个方法,而不是简单地复制粘贴。复制不同的位置是方法参数的理想候选者。在这种情况下,类似这样的方法会很好地工作:
private void createOnClickListener(TextView view, Class<Activity> activityClass) {
view.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the phrases View is clicked on.
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, activityClass);
startActivity(intent);
}
});
}
现在,您可以使用一行创建每个侦听器:
createOnClickListener(colors, ColorsActivity.class);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句