【问题标题】:New to app development. Creating a button that links one class to another?应用程序开发新手。创建一个将一个类链接到另一个类的按钮?
【发布时间】:2012-12-05 16:21:15
【问题描述】:

我创建了两个类。我想在 1 类(MainActivity)上有一个按钮,当它被按下时,它将带我到 2 类(字母)。我尝试了很多方法,但都没有成功。下面是我的原始代码。谁能帮我? 抱歉,我是应用开发新手。

package com.example.lullabymain;


import android.os.Bundle;  
import android.app.Activity;
import android.view.Menu;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.view.View;
import android.view.View.OnClickListener;




public class MainActivity extends Activity implements OnClickListener {

private MediaPlayer mp;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // new code

        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        findViewById(R.id.button1).setOnClickListener(this);
        findViewById(R.id.button2).setOnClickListener(this);
        findViewById(R.id.button3).setOnClickListener(this);
        findViewById(R.id.button4).setOnClickListener(this);
        findViewById(R.id.button5).setOnClickListener(this);
    }


    public void onClick(View v) {
        int resId = 0;
        switch (v.getId()) {
        case R.id.button1: resId = R.raw.rockabye; break;
        case R.id.button2: resId = R.raw.hushlittlebaby; break;
        case R.id.button3: resId = R.raw.twinkle; break;
        case R.id.button4: resId = R.raw.hickory; break;
        case R.id.button5: resId = R.raw.oldmcd; break;


        }
        //release any resources from previous mediaplayer
        if (mp != null) {
            mp.release();
        }
        //create a new mediaplayer to play this sound
        mp = MediaPlayer.create(this, resId);
        mp.start();

    }


    @Override
    protected void  onStop()
    {
        //stop audio
        super.onStop();
        mp.stop();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

下面的代码是我尝试的包含“意图”的代码

package com.example.lullabymain;

import android.os.Bundle; 

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.media.AudioManager;

import android.media.MediaPlayer;

import android.view.View;

import android.view.View.OnClickListener;

public class MainActivity extends Activity implements OnClickListener {
    private MediaPlayer mp;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // new code
        **View button6 = findViewById(R.id.button6);
        button6.setOnClickListener(this);**       
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        findViewById(R.id.button1).setOnClickListener(this);
        findViewById(R.id.button2).setOnClickListener(this);
        findViewById(R.id.button3).setOnClickListener(this);
        findViewById(R.id.button4).setOnClickListener(this);
        findViewById(R.id.button5).setOnClickListener(this);
    }


    public void onClick(View v) {
        int resId = 0;
        switch (v.getId()) {
        case R.id.button1: resId = R.raw.rockabye; break;
        case R.id.button2: resId = R.raw.hushlittlebaby; break;
        case R.id.button3: resId = R.raw.twinkle; break;
        case R.id.button4: resId = R.raw.hickory; break;
        case R.id.button5: resId = R.raw.oldmcd; break;
        **case R.id.button6:
            Intent i = new Intent(this, Alphabet.class);
            startActivity(i);
            break;**

        }
        //release any resources from previous mediaplayer
        if (mp != null) {
            mp.release();
        }
        //create a new mediaplayer to play this sound
        mp = MediaPlayer.create(this, resId);
        mp.start();

    }


    @Override
    protected void  onStop()
    {
        //stop audio
        super.onStop();
        mp.stop();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

【问题讨论】:

  • Alphabet 是一个 Activity,是否已添加到您的清单中?
  • 如何以及在何处将其添加到我的清单中? @RvdK

标签: android helper helpers


【解决方案1】:

如果您想进行自定义编码,则需要学习 Objective-C 或 Swift 等语言来开发 iOS 应用程序。或者另一种方式是移动应用程序开发平台。借助应用开发工具,您无需编写任何代码即可使用拖放功能开发应用。

我是一名 iOS 应用开发者,我尝试过大部分移动应用开发平台。到今天为止,我在 Phonegap、Telerik、Configure.IT 等的帮助下开发了 50 多个应用程序。它们在应用程序商店中成功运行。

根据我在该领域的经验,我建议开发人员和初学者使用像http://www.configure.it/ 这样的移动应用程序开发平台,因为它提供了自动编码、应用程序预览功能、直接API 连接和更多功能。这些东西可以节省更多的开发时间,并在更短的时间内提供快速且设计良好的应用程序。

这个工具的主要好处是,它是基于网络的平台,所以您不需要购买 Mac 系统,您可以从任何地方以及任何系统制作应用程序。

【讨论】:

    【解决方案2】:

    目前在 MainActivity Activity 中,您没有将 setOnClickListener 添加到 button6 中,但在 onClick 方法中,您尝试在 button6 click 上启动 Activity。要让您的代码正常工作,请将 setOnClickListener 添加到 button6 中

    public class MainActivity extends Activity implements OnClickListener {
    private MediaPlayer mp;
    Button button6 ;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // new code
        button6 = (Button)findViewById(R.id.button6);
        button6.setOnClickListener(this);      
    

    并在 Manifest 中注册 Alphabet Activity 为:

    <activity android:name=".Alphabet" />
    

    【讨论】:

    • 在他的代码中,View button6 = findViewById(R.id.button6); button6.setOnClickListener(this);
    • @imran kahn 我有一个 setOnClickListenr(this);已经在那里了吗?
    • 有什么我可以添加让它工作的@RvdK 会假设创建一个链接到另一个类的按钮会很简单吗?
    • @imrankhan 我刚刚尝试了您的代码,但它不起作用?抱歉听起来很愚蠢。只是在这里挣扎
    • @user1879688 :您在单击按钮时遇到任何异常?
    【解决方案3】:
    package com.example.lullabymain;
    
    import android.os.Bundle; 
    
    import android.app.Activity;
    
    import android.content.Intent;
    
    import android.view.Menu;
    
    import android.media.AudioManager;
    
    import android.media.MediaPlayer;
    
    import android.view.View;
    
    import android.view.View.OnClickListener;
    
    public class MainActivity extends Activity implements OnClickListener {
    private MediaPlayer mp;
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // new code
        Button button6 = (Button)findViewById(R.id.button6);
        button6.setOnClickListener(this);      
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        findViewById(R.id.button1).setOnClickListener(this);
        findViewById(R.id.button2).setOnClickListener(this);
        findViewById(R.id.button3).setOnClickListener(this);
        findViewById(R.id.button4).setOnClickListener(this);
        findViewById(R.id.button5).setOnClickListener(this);
    }
    
    
    public void onClick(View v) {
        int resId = 0;
        switch (v.getId()) {
        case R.id.button1: resId = R.raw.rockabye; break;
        case R.id.button2: resId = R.raw.hushlittlebaby; break;
        case R.id.button3: resId = R.raw.twinkle; break;
        case R.id.button4: resId = R.raw.hickory; break;
        case R.id.button5: resId = R.raw.oldmcd; break;
        case R.id.button6:
            Intent i = new Intent(getApplicationContext(), com.example.lullabymain.Alphabet.class);
            startActivity(i);
            break;
    
        }
        //release any resources from previous mediaplayer
        if (mp != null) {
            mp.release();
        }
        //create a new mediaplayer to play this sound
        mp = MediaPlayer.create(this, resId);
        mp.start();
    
    }
    
    
    @Override
    protected void  onStop()
    {
        //stop audio
        super.onStop();
        mp.stop();
    }
    
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    

    }

    【讨论】:

    • 我试过你的确切代码,它要求我导入 android.widget.Button; as Button button6 = (Button)findViewById(R.id.button6);否则会出现错误@viks
    • 只需添加 import android.widget.Button;导入后 android.view.View.OnClickListener;
    【解决方案4】:

    当您设置 {this} 的上下文时,您正在使用 onClickListener 的 {this}。使用 getApplicationContext();

    Button button6 = (Button)findViewById(R.id.button6);
    button6.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            startActivity(new Intent(getApplicationContext(), Alphabet.class));
        }
    });
    

    你的代码抛出了什么错误?

    【讨论】:

    • 试过你的代码。它要求导入 android.widget.Button;我确实做到了。然后当它在adk上运行时,我点击了按钮,由于一些“不幸的错误”而关闭了应用程序
    • 不幸的错误?我从来没有见过这样的东西……那是来自 LogCat 的吗?还是编译错误?但是我确实忘记正确关闭该功能,所以请查看我的编辑,看看是否可以解决任何问题。如果问题仍然存在,请尝试在 Eclipse 中单击:Project -> Clean
    【解决方案5】:

    您需要做的是在所需按钮上设置点击侦听器 然后是 Intents to go to your new class 例如 Intent i5 = new Intent(this, HadithList.class); 开始活动(i5);

    【讨论】:

    • 你只是病了。你怎么做呢?谢谢
    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2018-09-15
    • 2019-01-27
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多