Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t实例化类-android编程_Java_Android_Xml - Fatal编程技术网

Java Can';t实例化类-android编程

Java Can';t实例化类-android编程,java,android,xml,Java,Android,Xml,我在这里观看了教程视频:在观看教程时遇到了一些错误。在我开始学习教程:onCheckedChanged方法之前,一切都很好。有人能解释一下我做错了什么吗?非常感谢 LogCat代码 09-15 18:38:22.444: E/MediaPlayer(1764): Should have subtitle controller already set 09-15 18:38:27.984: E/MediaPlayer(1764): Should have subtitle controller a

我在这里观看了教程视频:在观看教程时遇到了一些错误。在我开始学习教程:onCheckedChanged方法之前,一切都很好。有人能解释一下我做错了什么吗?非常感谢

LogCat代码

09-15 18:38:22.444: E/MediaPlayer(1764): Should have subtitle controller already set
09-15 18:38:27.984: E/MediaPlayer(1764): Should have subtitle controller already set
09-15 18:38:31.374: E/AndroidRuntime(1764): FATAL EXCEPTION: main
09-15 18:38:31.374: E/AndroidRuntime(1764): Process: com.example.myfirstapp, PID: 1764
09-15 18:38:31.374: E/AndroidRuntime(1764): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.TutorialOne}: java.lang.InstantiationException: can't instantiate class com.example.myfirstapp.TutorialOne
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.os.Handler.dispatchMessage(Handler.java:102)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.os.Looper.loop(Looper.java:136)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.app.ActivityThread.main(ActivityThread.java:5017)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at java.lang.reflect.Method.invokeNative(Native Method)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at java.lang.reflect.Method.invoke(Method.java:515)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at dalvik.system.NativeStart.main(Native Method)
09-15 18:38:31.374: E/AndroidRuntime(1764): Caused by: java.lang.InstantiationException: can't instantiate class com.example.myfirstapp.TutorialOne
09-15 18:38:31.374: E/AndroidRuntime(1764):     at java.lang.Class.newInstanceImpl(Native Method)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at java.lang.Class.newInstance(Class.java:1208)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
09-15 18:38:31.374: E/AndroidRuntime(1764):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
09-15 18:38:31.374: E/AndroidRuntime(1764):     ... 11 more
主Java代码

package com.example.myfirstapp;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;


public class Main extends Activity {
// declare variables for the who class 
MediaPlayer logoMusic; 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    // start music command 
    logoMusic=MediaPlayer.create(Main.this, R.raw.melody);
    logoMusic.start();

    // start thread 
    Thread logoTimer=new Thread(){
        public void run(){
            try {
                sleep(5000); // 1k is 1sec 
                Intent menuIntent=new Intent("com.example.myfirstapp.MENU");// address in   manifest 
                startActivity(menuIntent);

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            finally
            {
                finish();
            }

        }

    };
    logoTimer.start();

}

@Override
protected void onPause() {
    super.onPause();

    logoMusic.release();

}
}

菜单Java代码

package com.example.myfirstapp;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;



public class Menu extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final MediaPlayer buttonSound=MediaPlayer.create(Menu.this, R.raw.button);// make sure it is a final variable bc u are using it in sub 

    // set up buttons reference
    Button tut1=(Button) findViewById(R.id.tutorial1);
    Button tut2=(Button) findViewById(R.id.tutorial2);

    // setting up the button functions
    tut1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            buttonSound.start();

            startActivity(new Intent("com.example.myfirstapp.TutorialOne"));// short cut in  creating the intent 
        }
    });

     tut2.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {

            // TODO Auto-generated method stub
            buttonSound.start();
            startActivity(new Intent("com.example.myfirstapp.TutorialOne"));
        }


    });
    }

    @Override
    protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
}

}
java代码教程

package com.example.myfirstapp;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;

@SuppressLint("RtlHardcoded")
public abstract class TutorialOne extends Activity implements OnCheckedChangeListener{

// set up variables 
TextView textOut;
EditText textIn; 
RadioGroup gravityG,styleG;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tutorial1);
    //similar to how you set the button to reference to xml 
    textOut=(TextView)findViewById(R.id.tvChange);
    textIn=(EditText)findViewById(R.id.editText1);
    gravityG=(RadioGroup)findViewById(R.id.rgGravity);
    styleG=(RadioGroup)findViewById(R.id.rgStyle);

    Button gen=(Button)findViewById(R.id.generate);
    gen.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // when you click generate, it will text out 

            textOut.setText(textIn.getText());// get user input and output
        }
    });

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
}

public void onCheckedChanged(CompoundButton buttonView, int isChecked) {
    // TODO Auto-generated method stub
    switch(isChecked){
    case R.id.rbLeft:
        textOut.setGravity(Gravity.LEFT);// set gravity to left 
        break;
    case R.id.rbCenter:
        textOut.setGravity(Gravity.CENTER);
        break;
    case R.id.rbRight:
        textOut.setGravity(Gravity.RIGHT);
        break;
}
}}
main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.myfirstapp.Main" >

<Button
    android:id="@+id/tutorial1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button1" />

<Button
    android:id="@+id/tutorial2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="31dp"
    android:text="@string/button2" />

</RelativeLayout>

splash.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" 
android:background="@drawable/flash">


</LinearLayout>

tutorial1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:text=""
    android:textStyle="bold" >

    <requestFocus />
</EditText>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2" >

    <TextView
        android:id="@+id/tvStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/style"
        android:gravity="center" />

    <TextView
        android:id="@+id/tvGravity"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="@string/gravity" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2" >

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:id="@+id/rgStyle" >

        <RadioButton
            android:id="@+id/rbNormal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/normal" />

        <RadioButton
            android:id="@+id/rbItalic"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/italic" />

        <RadioButton
            android:id="@+id/rbBold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/bold" />
    </RadioGroup>

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:id="@+id/rgGravity" >

        <RadioButton
            android:id="@+id/rbLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/left" />

        <RadioButton
            android:id="@+id/rbCenter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/center" />

        <RadioButton
            android:id="@+id/rbRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/right" />
    </RadioGroup>
</LinearLayout>

<TextView
    android:id="@+id/tvChange"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="@string/text_view_change"
    android:textStyle="bold" />

<Button
    android:id="@+id/generate"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/generate"
    android:textSize="25sp" />

</LinearLayout>

AndroidManifest代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myfirstapp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".Main"
        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=".Menu"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.example.myfirstapp.MENU" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

        <activity
        android:name=".TutorialOne"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name= "com.example.myfirstapp.TutorialOne" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>



</application>

</manifest>

你的
教程本身
活动
是抽象的。不能实例化抽象类。顺便说一句,无论如何,您不应该硬编码类名。如果这就是你的教程所建议的,那么我建议你跑得很远很远

Intent menuIntent = new Intent(Main.this, Menu.class);
startActivity(menuIntent);
编辑:对于
onCheckedChanged()
,您需要实现
RadioGroup.OnCheckedChangeListener
,而不是
CompoundButton.OnCheckedChangeListener
CompoundButton
one使用布尔值,而
RadioGroup
one提供整数

import android.widget.CompoundButton.OnCheckedChangeListener;
应该是

import android.widget.RadioGroup.OnCheckedChangeListener;

为了使用onCheckedChanged()方法,需要一个侦听器来获取该方法。使用由方法定义的匿名类侦听器执行此操作,或在onCreate()方法中执行以下操作:

button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
    @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
            /*Do things here*/
        }
    });

多亏了大家的帮助,我能够单独为教程生成一个新代码,但我不知道为什么我无法使用这些选项:左、右、正常、斜体、粗体。这是教程一的新代码,我还根据KCopock的建议更改了主java中的意图

这是我的新代码:

package com.example.myfirstapp;


import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class TutorialOne extends Activity implements OnCheckedChangeListener

{

// set up variables
TextView textOut;
EditText textIn;
RadioGroup gravityG, styleG;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tutorial1);
    // similar to how you set the button to reference to xml
    textOut = (TextView) findViewById(R.id.tvChange);
    textIn = (EditText) findViewById(R.id.editText1);
    gravityG = (RadioGroup) findViewById(R.id.rgGravity);
    styleG = (RadioGroup) findViewById(R.id.rgStyle);

    Button gen = (Button) findViewById(R.id.generate);
    gen.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // when you click generate, it will text out

            textOut.setText(textIn.getText());// get user input and output

        }
    });

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
}


@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
    // TODO Auto-generated method stub

    switch (checkedId) {
    case R.id.rbLeft:
        textOut.setGravity(Gravity.LEFT);// set gravity to left
        break;
    case R.id.rbCenter:
        textOut.setGravity(Gravity.CENTER);
        break;
    case R.id.rbRight:
        textOut.setGravity(Gravity.RIGHT);
        break;
    case R.id.rbNormal: 
        textOut.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL),Typeface.NORMAL);
        break; 
    case R.id.rbItalic: 
        textOut.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC),Typeface.ITALIC);
        break; 
    case R.id.rbBold: 
        textOut.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD),Typeface.BOLD);
        break; 


    }
}
}

它在
manifest.xml
中声明正确吗?嗨,出于某种原因,它不允许我添加以下方法:public void onCheckedChanged(RadioGroup,int checkedd){}当它是一个常规类时,所以我需要将它作为一个抽象来工作。有没有一种方法可以让我把教程单独作为一个摘要来添加?比如,我想使用与教程视频相同的方法,因为它返回int。所以我可以使用switch case。eclipse让我使用的方法是:@Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){//TODO Auto-generated method stub}将其抽象化只是隐藏您没有正确重写
oncheckedchangelister
接口方法。使其非抽象,然后修复覆盖,以便签名是
boolean isChecked
,而不是
int isChecked
。非常感谢。让我试试。嗨,我按照你告诉我的做了更改,遇到了一些错误/建议,所以我只是按照编译器告诉我的做了。我遇到了这样一个问题:我必须为OncheckedChangedListner创建一个接口,我做到了,但它仍然给我errorNvm。我明白了:)我完全按照你说的做了,现在成功了。我避免了他们一直叫我做的硬编码。无论如何谢谢。