使用按钮开始新活动

时间:2013-06-17 10:53:35

标签: android android-intent android-activity

我在使用按钮启动新活动时遇到问题。

我已经检查了以前与我的问题相关的问题,其中一个问题几乎相同,但解决方案对我来说没有用。所以这是我的问题。

我有2个活动,一个名为Acilis,第二个是MainActivity,

因此,当应用程序启动时,Acilis.class启动并且有两个按钮,它假设在单击按钮后启动MainActivity.class。点击应用程序崩溃后。这是我的代码

清单:

<activity
        android:name="com.example.workbench.Acilis"
        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="com.example.workbench.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.example.workbench.MAINACTIVITY" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

Acilis.class

public class Acilis extends Activity{

Button erkek, kadin;
Intent intent = new Intent("com.example.workbench.MAINACTIVITY");

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

    erkek = (Button) findViewById(R.id.button_erkek);
    kadin = (Button) findViewById(R.id.button_kadin);

    erkek.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub      
            startActivity(intent);      
            setContentView(R.layout.activity_main);         
        }
    }); 
    kadin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
                            startActivity(intent);  
            setContentView(R.layout.activity_main);
        }

MainActivity.class

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    sayfa_no = 0;
    ileri = (ImageButton) findViewById(R.id.button_ileri);
    geri = (ImageButton) findViewById(R.id.button_geri);
    fav = (ImageButton) findViewById(R.id.button_fav);

    ileri.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            sayfa_no++;
            sayfa.setText(sayfa_no + "/100");
        }
    }); 
    geri.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            sayfa_no--;
            sayfa.setText(sayfa_no + "/100");
        }
    });
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

我已经掩盖了我的括号不用担心,Eclipse不会给出任何错误。我认为我有语义错误。

logcat的:

06-17 10:59:41.369: E/AndroidRuntime(15450): FATAL EXCEPTION: main
06-17 10:59:41.369: E/AndroidRuntime(15450): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.workbench/com.example.workbench.MainActivity}: java.lang.NullPointerException
06-17 10:59:41.369: E/AndroidRuntime(15450):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at android.os.Looper.loop(Looper.java:137)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at android.app.ActivityThread.main(ActivityThread.java:5041)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at java.lang.reflect.Method.invokeNative(Native Method)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at java.lang.reflect.Method.invoke(Method.java:511)
06-17 10:59:41.369: E/AndroidRuntime(15450):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

它的错误案例太长了,发布了一些内容。

谢谢你们!

7 个答案:

答案 0 :(得分:2)

ileri.setOnClickListener(new View.OnClickListener() {

此行会导致NullPointerException类中的MAinActivity因为您正在访问布局资源而未调用 MainActivity setContentView()中的onCreate()方法。

setContentView(R.layout.activity_main);

<{1}} super.onCreate(savedInstanceState); onCreate()之后

答案 1 :(得分:0)

你尝试过吗?

Intent intent;

intent = new Intent(Acilis.this, MainActivity.class);
startActivity(intent);

答案 2 :(得分:0)

声明你的setContentView(R.layout.activity_main);在MAINACTIVITY.class。

erkek.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub     
        intent  = new Intent(getapplicationcontext() , MAINACTIVITY.class); 
        startActivity(intent);      
       // setContentView(R.layout.activity_main);         
    }
}); 

希望这会给你一些解决方案。

答案 3 :(得分:0)

尝试从Acilis活动中删除过滤器:

    <activity
        android:name="com.example.workbench.Acilis"
        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="com.example.workbench.Acilis" />
or
<activity android:name=".Acilis" />

答案 4 :(得分:0)

在清单文件中删除MainActivity的intent过滤器

答案 5 :(得分:-1)

只需改变它:

Intent intent = new Intent("com.example.workbench.MAINACTIVITY");

成:

Intent intent = new Intent(Acilis.this, MainActivity.class);
startActivity(intent);

并从清单文件中删除MainActivity活动的意图过滤器。

答案 6 :(得分:-1)

请从android清单中删除意图过滤器

<intent-filter>
            <action android:name="com.example.workbench.MAINACTIVITY" />
            <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>

创建方法中的资源分配

请把这一行检查一下,

intent  = new Intent(Acilis .this, MAINACTIVITY.class);
startActivity(intent)