2016-11-14 13 views
0

Ich möchte die Textview klicken, um esProceeding auf eine andere Tätigkeit von Textview klicken

in die zweite Klasse Aktivität zu gehen
public void click(View v){ 
     Intent intent; 
     switch(v.getId()){ 
      case R.id.titleExpense: 
       intent = new Intent(this,userExpense.class); 
       break; 
      case R.id.titleIncome: 
       intent = new Intent(this,userIncome.class); 
       break; 

     } 
     startActivity(intent); 
    } 

Der Fehler, den ich habe, ist die Absicht startActivity (Absicht), ich bin nicht ganz sicher, wo ich es erklären soll.

Layout: (Das Gleiche gilt für die Erträge ein)

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/titleExpense" 
     android:id="@+id/titleExpense" 
     android:textSize="20sp" 
     android:clickable="true" 
     android:onClick="onClick" 
     android:layout_below="@+id/txtGroup" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

Von der Manifest-Datei:

<application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".userExpense" /> 
     <activity android:name=".userIncome"></activity> 
    </application> 
+0

können Sie den vollständigen Code posten! – dauruy

+0

please stacktrace – Basi

+0

Bitte überprüfen Sie meine Antwort @Ralph – SaravInfern

Antwort

2

Nach

android:onClick="onClick" 

Ihre Methode muss onClick genannt werden, nicht click .

public void onClick(View v){ 
    Intent intent = null; 
    switch(v.getId()){ 
     case R.id.titleExpense: 
      intent = new Intent(this,userExpense.class); 
      break; 
     case R.id.titleIncome: 
      intent = new Intent(this,userIncome.class); 
      break; 

    } 
    if (null!=intent) startActivity(intent); 
    } 

Oder den Java-Code verwenden, um in das Textview setOnClickListener.

+0

Fügen Sie außerdem die startActivity() innerhalb der Falldefinition ein, um einen Kompilierungszeitfehler zu vermeiden, oder verwenden Sie einen Standardfall, um die Absicht zu initialisieren. –

+0

Stimmen Sie dem zu, aber wenn es nicht funktioniert, laden Sie auch Fehlermeldungen hoch. – Sean83

0

versuchen diese,

public void click(View v){ 
     Intent intent; 
     switch(v.getId()){ 
      case R.id.titleExpense: 
       intent = new Intent(this,userExpense.class); 
       startActivity(intent); 
       break; 
      case R.id.titleIncome: 
       intent = new Intent(this,userIncome.class); 
       startActivity(intent); 
       break; 
      } 
    } 
+0

Kein Fehler mehr, aber jetzt habe ich ein anderes Problem. Selbst wenn als anklickbar stimmt, funktioniert es immer noch nicht – Ralph

+1

Haben Sie die userExpense und userIncome Klassen in android manifest.xml Datei hinzugefügt @Ralph –

+0

@Daryl Die Aktivitäten sind dort – Ralph

0

Wenn Sie beziehen sich auf 'this ', bezieht es sich auf Instanz von View Sie geklickt haben, können Sieverwenden 210 Mutter Aktivität zu beziehen und immer mit Schaltergehäuse verwenden Standard-Null-Fehler zu vermeiden, versuchen Sie unter Code

 public void click(View v){ 
        Intent intent; 
        switch(v.getId()){ 
         case R.id.titleExpense: 
          intent = new Intent(getApplicationContext(),userExpense.class); 
          break; 
         case R.id.titleIncome: 
         default : 
          intent = new Intent(getApplicationContext(),userIncome.class); 
          break; 

        } 
        startActivity(intent); 
      } 
0

Sie sollten Ihre xml

Zum Beispiel ändern,

<TextView 
    android:id="@+id/tv1" 
    android:layout_width=blahblah 
    android:layout_height=blahblah 
    android:onClick="onClick" 
    android:clickable="true" /> 

und in Java Datei,

tv1.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    Intent intent; 
    switch(v.getId()){ 
     case R.id.titleExpense: 
      intent = new Intent(this,userExpense.class); 
      startActivity(intent); 
      break; 
     case R.id.titleIncome: 
      intent = new Intent(this,userIncome.class); 
      startActivity(intent); 
      break; 
     } 
    } 
}); 
+0

java.lang.IllegalStateException: Die Methode onClick (View) konnte nicht in einem Eltern- oder Vorfahren-Kontext für das android: onClick-Attribut gefunden werden, das in der view-Klasse android.support.v7.widget definiert wurde.AppCompatTextView mit der ID 'titleExpense' – Ralph

+0

Es gab mir diesen Fehler – Ralph

+0

@Ralph Sie brauchen nicht das XML onClick, wenn Sie 'setOnClickListener' haben –

0

Versuchen Sie diese.

public void click(View v){ 
    Intent intent; 
    switch(v.getId()){ 
     case R.id.titleExpense: 
      intent = new Intent(MainActivity.this,userExpense.class); 
      startActivity(intent); 
      break; 
     case R.id.titleIncome: 
      intent = new Intent(MainActivity.this,userIncome.class); 
      startActivity(intent); 
      break; 
     } 
} 
0

implementiert haben Sie die OnClickListener und intialized für die Ansichten in oncreate

Probe

public class MyActivity extends ActionBarActivity implements View.OnClickListener { 

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

     Button titleExpense= (Button) findViewById(R.id.titleExpense); 
     titleExpense.setOnClickListener(this); 

     Button titleIncome = (Button) findViewById(R.id.titleIncome); 
     titleIncome.setOnClickListener(this); 


    } 
@Override 
public void onClick(View v){ 
     Intent intent; 
     switch(v.getId()){ 
      case R.id.titleExpense: 
       intent = new Intent(this,userExpense.class); 
       startActivity(intent); 
       break; 
      case R.id.titleIncome: 
       intent = new Intent(this,userIncome.class); 
       startActivity(intent); 
       break; 
      } 
    } 
+0

Brauche ich wirklich die Schaltfläche, weil es eine Textansicht keine Schaltfläche – Ralph

+0

was auch immer Ihre Ansicht ist Sie können es verwenden – SaravInfern

0

Versuchen Sie dies, d. H. Machen Intent Global;

Intent intent; 
@Override 
public void onClick(View v) { 

    switch (v.getId()) { 
     case R.id.text: 
      intent = new Intent(this, Main2Activity.class); 
      break; 
    } 
    startActivity(intent); 
} 
Verwandte Themen