【问题标题】:Can somebody help me in Android studio有人可以在 Android Studio 中帮助我吗
【发布时间】:2015-08-24 14:37:15
【问题描述】:

我创建了一个壁纸和铃声应用程序。 壁纸和铃声是 2 个按钮。

这两个按钮相互打开一个新页面。 在壁纸页面中,我有一个按钮,我想打开一个新页面,但它不起作用。

我在下面粘贴了 java 和来自 android studio 的清单。

主要活动java:

public class MainActivity extends AppCompatActivity {

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

}


@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;
}


public void onButtonClicks(View c) {


    if (c.getId() == R.id.Bdisplay) {
        Intent i = new Intent(MainActivity.this, display.class);
        startActivity(i);
        overridePendingTransition(R.animator.animation1, R.animator.animation2);
    }
}
 public void onClick (View v) {

     if (v.getId() == R.id.Bdisplay) {

         Intent intent = new Intent(MainActivity.this, display.class);
         startActivity(intent);
         overridePendingTransition(R.animator.animation1, R.animator.animation2);
     }
 }




public void onButtonClick(View x) {


    if (x.getId() == R.id.Bdisplay) {
        Intent i = new Intent(MainActivity.this, ringtone.class);
        startActivity(i);
        overridePendingTransition(R.animator.animation1, R.animator.animation2);
    }

}

铃声java代码:

import android.app.Activity;
import android.os.Bundle;

public class ringtone extends Activity {

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

}

display(the name for wallpapers) java code:


import android.app.Activity;
import android.os.Bundle;

public class display extends Activity
{


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

  }
}

以及新页面的java代码:

import android.app.Activity;
import android.os.Bundle;

public class newpage extends Activity {

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


  }
}

清单:

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

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".display"></activity>
    <activity android:name=".ringtone"></activity>
    <activity android:name=".newpage"></activity>




</application>

</manifest>

我做错了什么?

【问题讨论】:

  • 当你点击按钮时,你总是在启动同一个 Activity (MainActivity)。替换您的意图 MainActivity.class 并放置您要启动的活动。
  • 那么我必须在 MainActivity 中进行哪些更改?可以写java代码吗?

标签: java android android-layout button android-intent


【解决方案1】:

我有一些建议给你:

  • 始终使用大写字母和驼峰式命名活动:NewPage 代替 newpage 和 Ringtone 代替铃声。这有助于您识别变量/活动和方法。
  • 使用显式方式调用 OnClick 方法。

这样做:

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        //do stuffs here
    }
});`

是的,你总是调用同一个类,可能这就是它不起作用的原因;)

编辑:解决问题试试这个:

在您的活动中,您有两个按钮可以将用户发送到铃声或壁纸。想象一下它们被称为WallpaperButton 和RingtoneButton;在名为 MainActivity 的活动中,此活动应如下所示:

public class MainActivity extends AppCompatActivity {

Button btnRingtone, btnWallpaper;

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

        btnRingtone = (Button) findViewById(R.id.RingtoneButton);
        btnWallpaper = (Button) findViewById(R.Id.WallpaperButton);

        btnRingtone.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                //Call the ringtone activity as "RingtoneActivity"
                Intent i = new Intent(MainActivity.this, RingtoneActivity.class);
                StartActivity(i);
            }
        });`

        btnWallpaper.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                //Call the wallpaper activity as "WallpaperActivity"
                Intent i = new Intent(MainActivity.this, WallpaperActivity.class);
                StartActivity(i);
            }
        });`
    }
}

在您的 mainactivity 中使用此代码,如果用户点击按钮壁纸,他会进入壁纸活动,如果他点击按钮铃声,他会进入铃声活动。

对 NewPageActivity 执行相同操作。如果您对如何创建“SetOnClickListener”有疑问,请查看here for an example

如果您有任何问题或问题,请随时提出:)

【讨论】:

  • 你能说得更清楚些吗?我必须改变什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 2014-02-06
  • 2021-02-21
相关资源
最近更新 更多