2014-01-19 59 views
8

我想這樣做,只需點擊一下按鈕,就會彈出一條消息。帶按鈕的Android Eclipse彈出消息

現在彈出來,只要我打開應用程序。

BTW的按鈕,我想觸發彈出是main.xml中

關於按鈕下面是我的main.xml(與佈局的東西):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#3DE400" 
    android:orientation="vertical" > 

    <!-- background originally #d78a00 --> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="60dp" 
     android:fontFamily="sans-serif-condensed" 
     android:paddingLeft="10dp" 
     android:text="Sample App" 
     android:textColor="#FFF" 
     android:textSize="60sp" /> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:fontFamily="sans-serif-condensed" 
     android:paddingLeft="10dp" 
     android:text="@string/creator" 
     android:textColor="#FFF" 
     android:textSize="20dp" /> 

    <Button 
     android:id="@+id/about" 
     android:layout_width="123dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="50dp" 
     android:background="@android:color/transparent" 
     android:fontFamily="sans-serif-condensed" 
     android:gravity="left" 
     android:paddingLeft="10dp" 
     android:text="@string/about" 
     android:textColor="#FFF" 
     android:textSize="40dp" 
     android:onClick="show" /> 

</LinearLayout> 

這裏是我的MainActivity。 Java的:

package com.pranavsanghvi.sampleappv4; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.view.Menu; 
import android.widget.Toast; 
import android.content.DialogInterface; 
import android.view.View; 
import android.widget.Button; 


public class MainActivity extends Activity { 

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

     AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
     alert.setTitle("About"); 
     alert.setMessage("Sample About"); 
     alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick (DialogInterface dialog, int id) { 
       Toast.makeText (MainActivity.this, "Success", Toast.LENGTH_SHORT) .show(); 
      } 
     }); 
     alert.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       Toast.makeText(MainActivity.this, "Fail", Toast.LENGTH_SHORT) .show(); 
      } 
     }); 
     alert.show(); 


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

} 

回答

0

如果你想顯示關於按鈕彈出單擊添加onCreate()

以下3210
Button aboutButton = (Button) findViewById(R.id.about); 
aboutButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       alert.show(); 
      } 
     }); 

剛從onCreate()刪除alert.show();;

更新: -

您是否獲得警報不能得到解決?如果是的話要麼使警報全球即外聲明它onCreate()

public class MainActivity extends Activity { 
    AlertDialog.Builder alert; 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
// code 
alert = new AlertDialog.Builder(MainActivity.this); 
// code 

或使其最終使其

final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 

也刪除alert.show();這是onCreate();

+0

當我這樣做,我有兩個無法解決的警報和addNewContact ..我怎麼能解決這個問題? – user3212831

+0

在'aboutbutton'' setOnClickListener'內只使用'alert.show()' –

+0

請參閱我的更新@ user3212831 –

0

首先,聲明你的警報和MainActivity中的按鈕:

public class Mainactivity extends Activity { 
    private AlertDialog.Builder alert; 
    private Button btAbout; 

    //rest of the code 
} 

然後,在的onCreate(),創建警報像你一樣,除了這一行:

alert.show(); // <--- remove this line as not to show the alert immediately 

因爲你已經宣佈全球警報,記得也是在這裏刪除AlertDialog.Builder,所以不是:

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
alert.setTitle("About"); 

//rest of the code 

你應該有:

alert = new AlertDialog.Builder(MainActivity.this); 
alert.setTitle("About"); 

//rest of the code 

其次,獲取句柄到你對按鈕:

btAbout = (Button) findViewById(R.id.about); 

設置onClickListener到按鈕:

btAbout.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     //when this button is clicked, show the alert 
     alert.show(); 
    } 
}); 

所有這一切都在的onCreate()。現在,當點擊按鈕時,您的警報將被顯示。

+0

除了「alert.show();在「btAbout.setOnClickListener(新視圖。OnClickListener(){「該警報有一個錯誤,指出」不能引用由另一個方法定義的內部類中的非最終變量警報「 – user3212831

+0

任何想法如何解決該問題? – user3212831

+0

您在MainActivity中聲明瞭」alert「在onCreate()? – Melquiades