2016-11-14 25 views
0

我想点击TextView的,因此它可以去第二课堂活动出发到另一个活动点击的TextView

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

我的错误是意图startActivity(意向),我不能完全肯定我想要宣布它。

布局:(同为收入之一)

<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" /> 

从清单文件:

<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

你可以发布完整的代码! – dauruy

+0

请发帖stacktrace – Basi

+0

请检查我的答案@Ralph – SaravInfern

回答

2

意见根据

android:onClick="onClick" 

你的方法需要被命名onClick,不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); 
    } 

或者,使用Java代码setOnClickListener到TextView的。

+0

也可以将startActivity()放在案例定义中,以避免编译时错误或者使用默认情况来初始化意图。 –

+0

同意这一点,但如果它不起作用,也会上传错误消息。 – Sean83

0

试试这个,

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

没有更多的错误,但现在我有另一个问题。即使设置为可点击true,它仍然不起作用 – Ralph

+1

您是否在android manifest.xml文件中添加了userExpense和userIncome类@Ralph –

+0

@Daryl活动在那里 – Ralph

0

如果你指的是'this ',它指的是您点击的View的实例,您可以使用getApplicationContext()指父活动,并始终使用默认的带开关的情况下,避免无效错误,试试下面的代码

 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

你应该修改你的XML

例如,

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

,并在Java文件,

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:在父类或祖类中找不到onClick(View)方法在视图类android.support.v7.widget上定义的android:onClick属性的Context。AppCompatTextView ID为'titleExpense' – Ralph

+0

它给了我错误 – Ralph

+0

@Ralph你不需要XML onClick当你有'setOnClickListener' –

0

试试这个。

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

你有没有实现的onclickListener和intialized在OnCreate中

样品

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

我真的需要按钮,因为它的文本视图不是按钮 – Ralph

+0

无论你的视图是什么您可以使用它 – SaravInfern

0

试试这就是说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); 
} 
相关问题