Android教程-添加动作栏,复制类



我正在尝试通过遵循Android Studio教程创建操作栏。我熟悉VBA, c++和Python,但这是我第一次冒险进入一个应用程序,它使用java, xml等。我这么说是因为我认为我在代码中放错了地方(或命名不当),因为当我试图运行这个时,我得到了错误error: duplicate class: com.example.batman.myfirstapp.MyActivity

我不明白它是如何重复的,我只有一个"MyActivity.java",所以我认为我不能做超过一个public class MyActivity extends ...每个。java文件?

这是我所拥有的(请让我知道如果我需要包括其他代码):

MyActivity.java

package com.example.batman.myfirstapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.support.v7.app.*;
public class MyActivity extends ActionBarActivity{
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
            case R.id.action_search:
//              openSearch();
                return true;
            case R.id.action_settings:
//              openSettings();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}
public class MyActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = ".com.batman.myfirstapp.MESSAGE";
    /**
     * Called when the user clicks the Send button
     */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);
//         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        // If your minSdkVersion is 11 or higher, instead use:
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

main_activity_actions.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myfirstapp="http://schemas.android.com/apk/res-auto">
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          myfirstapp:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          myfirstapp:showAsAction="never" />
</menu>

再次,我不确定其他文件(strings.xml, DisplayMessageActivity.java等)将有助于调试上述内容,所以让我知道我还可以包括什么。

谢谢你的建议/帮助!

你的直觉是正确的!你只能有一个MyActivity类在你的文件中,这是它可能看起来像:

public class MyActivity extends ActionBarActivity {
    public final static String EXTRA_MESSAGE = ".com.batman.myfirstapp.MESSAGE";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_search:
                return true;
            case R.id.action_settings:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    private void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

你的假设是正确的。在.java文件中,有两个名为MyActivity的类。

最新更新