Button:OnClick() neue Activity starten

  • 11 Antworten
  • Letztes Antwortdatum
B

Blackscreen

Neues Mitglied
0
Hei Leute!

Habe eine Frage, und zwar will ich, wenn ein Button geklickt wird.
eine neue Klasse aufgerufen wird & die in den Vordergrund kommt. hier die Screens:
Hier der Menübutton um das menü aufzurufen:
sc20121018100301.png


Hier der RSS-Feed Button mit der die neue Activity gestartet werden soll.
sc20121018100323.png



main-Activity Code:
Code:
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MenuList = (LinearLayout) findViewById(R.id.linearLayout2);
        btnToggleMenuList = (Button) findViewById(R.id.button1);
        nasabtn = (Button) findViewById(R.id.NasaFeed);
        strg = false;
        isExpanded = true;
        //Start-designs
        
        hideAllElements();
        
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        screenWidth = metrics.widthPixels;
        btnToggleMenuList.setOnClickListener(new OnClickListener() {
        	public void onClick(View v) {
        		if (isExpanded) {
        			isExpanded = false;
        			MenuList.startAnimation(new ExpandAnimation(MenuList, 0,(int)(screenWidth*0.7), 20));
        			MenuList.setVisibility(View.VISIBLE);
        			btnToggleMenuList.setClickable(false);
        			nasabtn.setClickable(true);
        			strg = true;
        		}
        	}
        });        
    
    nasabtn.setOnClickListener(new OnClickListener()	{
    	public void onClick(View v){
    		if(strg){
    			MenuList.startAnimation(new CollapseAnimation(MenuList, 0,(int)(screenWidth*0.7), 20));
        		MenuList.setVisibility(View.INVISIBLE);
        		btnToggleMenuList.setClickable(true);
    			nasabtn.setClickable(false);
    			isExpanded = true;
    			strg = false;
    		}else{
    			
    		}
    	}
    });
    }
    
    private void hideAllElements(){
    	MenuList.setVisibility(View.INVISIBLE);
        MenuList.startAnimation(new ExpandAnimation(MenuList, 0, 0, 0));
    }
    
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

Bitte um eure Hilfe Leute.
 
Hi,
gib dem Menü-Button einfach einen onclick-namen (z.b. onClickButton).
Code:
[SIZE=2]
[LEFT][/SIZE][SIZE=2][COLOR=#008080][SIZE=2][COLOR=#008080]<[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f7f][SIZE=2][COLOR=#3f7f7f]Button[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:id[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"@+id/button1"[/LEFT]
[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:layout_width[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"fill_parent"[/LEFT]
[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:layout_height[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"wrap_content"[/LEFT]
[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:layout_alignParentLeft[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"true"[/LEFT]
[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:layout_below[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"@+id/editText4"[/LEFT]
[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:layout_marginTop[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"20dp"[/LEFT]
[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:onClick[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"onClickButton"[/LEFT]
[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:text[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"@string/Menu"[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080][SIZE=2][COLOR=#008080]/>
[/COLOR][/SIZE][/COLOR][/SIZE]
Geh dann in die MainActivity.java (Die Activity, wo dein Menübutton ist)
und schreib folgendes:
Code:
public void onClickButton (View view) {
Intent intent = new Intent (this, zweiteActivity.class);
startActivity(intent);
[I]finish(); [/I]
[I]// Das finish(); muss nicht umbedingt sein, aber wenn du dein RSS [/I]
[I]// [/I][I]dann schließt, dann kommst du zurück zum Menü-Button, muss du [/I]
[I]// eben selber wissen, ob du es willst[/I]
}
Gruß
 
Du musst allerdings keine onClick in der xml definieren.

Eine innere-Klasse, wie du es ja schon selbst gemacht hast, geht auch.

Gruß
 
IceClaw schrieb:
Du musst allerdings keine onClick in der xml definieren.

Eine innere-Klasse, wie du es ja schon selbst gemacht hast, geht auch.

Gruß

Joa, je nachdem wie mans mag ;)
 
Danke. Hab das jz gemacht, allerdings bekomm ich jz ne Fehlermeldung die wäre:

10-18 10:40:51.414: E/AndroidRuntime(1641): FATAL EXCEPTION: main
10-18 10:40:51.414: E/AndroidRuntime(1641): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.nasadailyimage/com.example.nasadailyimage.NasaFeed}: java.lang.InstantiationException: com.example.nasadailyimage.NasaFeed

& noch mehr. :p
 
Was hast du denn genau geschrieben?
Schick uns einfach mal den Code der beiden Activitys ;)
 
hast du die aufzurufende activity in deiner manifest deklariert?

Wenn ja, dann sei doch bitte mal so lieb und poste den code
 
okey. Wie mach ich das im Manifest?

hier der Code von NasaFeed.java:

Code:
public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		MenuList = (LinearLayout) findViewById(R.id.linearLayout2);
        btnToggleMenuList = (Button) findViewById(R.id.button1);
        statbtn = (Button) findViewById(R.id.StatistikenButton);
        //Start-designs
        //hideAllElements();
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        screenWidth = metrics.widthPixels;
		tv1 = (TextView) this.findViewById(R.id.text);
		tv2 = (TextView) this.findViewById(R.id.text);
		iv1 = (ImageView) this.findViewById(R.id.image);
		nasaParser = new NasaParser();
		btn = (Button) findViewById(R.id.button);
		hideText = this.getString(R.string.HideText);
		showText = this.getString(R.string.ShowText);
		strg = false;
		URL url;
		
			try {
				url = new URL(URL_NASA);
			
			// Inputstream aus der URL erstellen
			// und nach Inhalten parsen

			
				
					nasaParser.parse(url.openStream());
					
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (SAXException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
		btn.setOnClickListener(new OnClickListener()

		{
			public void onClick(View arg0) {
				strg = !strg;
				if (strg) { // wenn strg true ist wird if ausgeführt.
					
						
					resetDisplay(nasaParser.getmTitle(), nasaParser.getmDate(), nasaParser.getmImageUrl(), nasaParser.getmDescription());
						// Ergebnisse in der UI darstellen
						btn.setText(hideText);
						tv1.setVisibility(TextView.VISIBLE);
						tv2.setVisibility(TextView.VISIBLE);
						iv1.setVisibility(ImageView.VISIBLE);
					
				
					
				} else {

					btn.setText(showText);
					tv1.setVisibility(TextView.INVISIBLE);
					tv2.setVisibility(TextView.INVISIBLE);
					iv1.setVisibility(ImageView.INVISIBLE);
				}
			}
			});
		
        btnToggleMenuList.setOnClickListener(new OnClickListener() {
        	public void onClick(View v) {
        		if (isExpanded) {
        			isExpanded = false;
        			MenuList.startAnimation(new CollapseAnimation(MenuList, 0,(int)(screenWidth*0.7), 20));
        			MenuList.setVisibility(View.INVISIBLE);
        			btnToggleMenuList.setClickable(false);
        			btnToggleMenuList.setClickable(true);
        		}else {
            		isExpanded = true;
            		MenuList.startAnimation(new ExpandAnimation(MenuList, 0,(int)(screenWidth*0.7), 20));
            		MenuList.setVisibility(View.VISIBLE);
            		btnToggleMenuList.setClickable(true);
        		}
        	}
        });        
    }
    
    private void hideAllElements(){
    	MenuList.setVisibility(View.INVISIBLE);
        MenuList.startAnimation(new ExpandAnimation(MenuList, 0, 0, 0));
    }
    

		
		

	public void resetDisplay(String title, String date, String imageURL, String Description) {
		tv1.setText(title+ "\n"  + date);
		tv2.setText(Description);
		iv1.setImageBitmap(getImage(imageURL));
	}

	public Bitmap getImage(String stringUrl) {
		try {
			URL url = new URL(stringUrl);
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setDoInput(true);
			connection.connect();
			InputStream input = connection.getInputStream();
			Bitmap myBitmap = BitmapFactory.decodeStream(input);
			connection.disconnect();
			input.close();
			return myBitmap;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
		
	}
	
	}


hier der Code von der Main:

Code:
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
	private LinearLayout MenuList;
	private Button btnToggleMenuList, nasabtn;
	private int screenWidth;
	private boolean isExpanded,strg;
	private Intent intent;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intent = new Intent(this, NasaFeed.class);
        MenuList = (LinearLayout) findViewById(R.id.linearLayout2);
        btnToggleMenuList = (Button) findViewById(R.id.button1);
        nasabtn = (Button) findViewById(R.id.button);
        strg = false;
        isExpanded = true;
        //Start-designs
        
        hideAllElements();
        
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        screenWidth = metrics.widthPixels;
        btnToggleMenuList.setOnClickListener(new OnClickListener() {
        	public void onClick(View v) {
        		if (isExpanded) {
        			isExpanded = false;
        			MenuList.startAnimation(new ExpandAnimation(MenuList, 0,(int)(screenWidth*0.7), 20));
        			MenuList.setVisibility(View.VISIBLE);
        			btnToggleMenuList.setClickable(false);
        			nasabtn.setClickable(true);
        			strg = true;
        		}
        	}
        });        
    
    nasabtn.setOnClickListener(new OnClickListener()	{
    	public void onClick(View v){
    		if(strg){
    			MenuList.startAnimation(new CollapseAnimation(MenuList, 0,(int)(screenWidth*0.7), 20));
        		MenuList.setVisibility(View.INVISIBLE);
        		btnToggleMenuList.setClickable(true);
    			nasabtn.setClickable(false);
    			isExpanded = true;
    			strg = false;
    			startActivity(intent);
    		}else{
    			
    		}
    	}
    });
    }
    
    private void hideAllElements(){
    	MenuList.setVisibility(View.INVISIBLE);
        MenuList.startAnimation(new ExpandAnimation(MenuList, 0, 0, 0));
    }
    
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}
}

Anschließend noch der Code vom Parser:

Code:
package com.example.nasadailyimage;

import java.io.IOException;
import java.io.InputStream;

import org.xml.sax.SAXException;



import android.sax.Element;
import android.sax.ElementListener;
import android.sax.EndTextElementListener;
import android.sax.RootElement;
import android.sax.StartElementListener;
import android.util.Xml;
import android.util.Xml.Encoding;

public class NasaParser {
	private String mTitle;
	private String mDescription;
	private String mDate;
	private String mImageUrl;

	/**
	 * @return the mTitle
	 */
	public String getmTitle() {
		return mTitle;
	}

	/**
	 * @return the mDescription
	 */
	public String getmDescription() {
		return mDescription;
	}

	/**
	 * @return the mDate
	 */
	public String getmDate() {
		return mDate;
	}

	/**
	 * @return the mImageUrl
	 */
	public String getmImageUrl() {
		return mImageUrl;
	}

	/**
	 * Parsing the rss-fees
	 * 
	 * @param is
	 *            inputstream
	 * @throws IOException
	 * @throws SAXException
	 */
	public void parse(InputStream is) throws IOException, SAXException {
		RootElement rss = new RootElement("rss");
		Element channel = rss.requireChild("channel");
		Element item = channel.requireChild("item");
		
		// preparing the parsing utility
		 item.setElementListener(new ElementListener() {
			public void end() {
				onItem(mTitle, mDescription, mDate, mImageUrl);
			}
			
			public void start(org.xml.sax.Attributes attributes) {
				// TODO Auto-generated method stub
				mTitle = mDescription = mDate = mImageUrl = null;
			}

			
		});
		item.getChild("title").setEndTextElementListener(
				new EndTextElementListener() {
					public void end(String body) {
						mTitle = body;
					}
				});
		item.getChild("description").setEndTextElementListener(
				new EndTextElementListener() {
					public void end(String body) {
						mDescription = body;
					}
				});
		item.getChild("pubDate").setEndTextElementListener(
				new EndTextElementListener() {
					public void end(String body) {
						mDate = body;
					}
				});
		item.getChild("enclosure").setStartElementListener(
				new StartElementListener() {
					

					public void start(org.xml.sax.Attributes attributes) {
						mImageUrl = attributes.getValue("", "url");
					}
				});
		// and now let's go ...
		Xml.parse(is, Encoding.UTF_8, rss.getContentHandler());
	}

	/**
	 * Have we found something? Only for logging!
	 * 
	 * @param title
	 * @param description
	 * @param date
	 * @param imageUrl
	 */
	public void onItem(String title, String description, String date,
			String imageUrl) {
		// This is where you handle the item in the RSS channel, etc. etc.
		// (Left as an exercise for the reader)
		System.out.println("title=" + title);
		System.out.println("description=" + description);
		System.out.println("date=" + date);
		// This needs to be downloaded for instance
		System.out.println("imageUrl=" + imageUrl);
	}
}

Manifest:

Code:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.nasadailyimage"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".NasaFeed"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
				
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
 
Hi,
du hast die MainActivity nicht in der Manifest angegeben, füge den Code noch hinzu:
Code:
<activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
				
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Und wieso hast du bei beiden Activitys die gleichen Layouts?
Fertige doch für die zweite Activity ein eigenes Layout an ;)
Gruß
 
Danke für den Hinweis! :)


& eine Frage habe ich noch:

im Manifest

steht ja jetzt bei beiden: <action android:name="android.intent.action.MAIN" />

muss man da bei der sekundären noch etwas ändern?
 
Zuletzt bearbeitet:
das 2.Layout packst du in der 2.Activitity in die onCreate() Methode:
Code:
setContentView(R.layout.zweites_layout);

Zur manifest:
Bei der Activity, die die "StartActivity" sein soll, bzw. die MainActivity,lässt du beides drin, bei der zweiten Activity packst du den LAUNCHER raus ;)
So, bin in den Ferien, byeeeee:D
 
Dieses Tutorial sollte dir Helfen. Das wird schritt für Schritt gezeigt, wie man ein Menü erstellt und dabei spielt die OnClick() Methode eine rolle.

Android Tutorial - Menü
 

Ähnliche Themen

S
Antworten
7
Aufrufe
1.276
Silvasurf
S
Zurück
Oben Unten